Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Внимание! Есть замечания модератора по теме: Название темы должно адекватно отражать суть решаемой проблемы и задачи!
Старый 11.07.2012, 23:53   #1
Phantom91x
Новичок
Джуниор
 
Регистрация: 11.07.2012
Сообщений: 3
По умолчанию SQL-запрос для вывода в шахматном виде просуммированной информации. Столбцы - месяцы, строчки - года

Помогите решить задачу...
В таблице DOCUMENT есть поля:
• DOC_DATE - дата документа.
• SUM - сумма документа.
требуется построить SQL-запрос, который обеспечивал бы вывод в шахматном виде (табличном) просуммированной информации (SUM) таблицы DOCUMENT. Столбцами таблицы должны быть МЕСЯЦы документов, строками должны быть ГОДа документов.
Phantom91x вне форума Ответить с цитированием
Старый 12.07.2012, 08:26   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

СУБД то какая?

общий принцип напишу, дальше корректируйте под свою БД:

Код:
select extract(year from DOCUMENT.DOC_DATE) as God,
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 1 then DOCUMENT.SUM else 0 end) as SumMesac1,
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 2 then DOCUMENT.SUM else 0 end) as SumMesac2,
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 3 then DOCUMENT.SUM else 0 end) as SumMesac3,
...
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 12 then DOCUMENT.SUM else 0 end) as SumMesac12
from DOCUMENT
group by extract(year from DOCUMENT.DOC_DATE)
а называть поля ключевыми словами - моветон и прямая дорога к косяками и глюкам! Неужели вместо SUM трудно было написать, хотя бы, DOC_SUM ?!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2012, 08:31   #3
Phantom91x
Новичок
Джуниор
 
Регистрация: 11.07.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
СУБД то какая?

общий принцип напишу, дальше корректируйте под свою БД:

Код:
select extract(year from DOCUMENT.DOC_DATE) as God,
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 1 then DOCUMENT.SUM else 0 end) as SumMesac1,
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 2 then DOCUMENT.SUM else 0 end) as SumMesac2,
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 3 then DOCUMENT.SUM else 0 end) as SumMesac3,
...
  sum ( case  extract(month from DOCUMENT.DOC_DATE) when 12 then DOCUMENT.SUM else 0 end) as SumMesac12
from DOCUMENT
group by extract(year from DOCUMENT.DOC_DATE)
а называть поля ключевыми словами - моветон и прямая дорога к косяками и глюкам! Неужели вместо SUM трудно было написать, хотя бы, DOC_SUM ?!
СУБД обычный ACCESS... Задание нужно сделать в C#... Сейчас попробую подправить...
Phantom91x вне форума Ответить с цитированием
Старый 12.07.2012, 08:56   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
СУБД обычный ACCESS
сразу надо говорить! Съэкономили бы время и себе и мне!!

Код:
select year(DOCUMENT.DOC_DATE) as God,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 1, DOCUMENT.SUM, 0 )) as  SumMesac1,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 2, DOCUMENT.SUM, 0 )) as  SumMesac2,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 3, DOCUMENT.SUM, 0 )) as  SumMesac3,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 4, DOCUMENT.SUM, 0 )) as  SumMesac4,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 5, DOCUMENT.SUM, 0 )) as  SumMesac5,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 12, DOCUMENT.SUM, 0 )) as  SumMesac12
from DOCUMENT
group by year(DOCUMENT.DOC_DATE)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 12.07.2012, 09:02   #5
Phantom91x
Новичок
Джуниор
 
Регистрация: 11.07.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
сразу надо говорить! Съэкономили бы время и себе и мне!!

Код:
select year(DOCUMENT.DOC_DATE) as God,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 1, DOCUMENT.SUM, 0 )) as  SumMesac1,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 2, DOCUMENT.SUM, 0 )) as  SumMesac2,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 3, DOCUMENT.SUM, 0 )) as  SumMesac3,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 4, DOCUMENT.SUM, 0 )) as  SumMesac4,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 5, DOCUMENT.SUM, 0 )) as  SumMesac5,
   sum ( IIF( month(DOCUMENT.DOC_DATE) = 12, DOCUMENT.SUM, 0 )) as  SumMesac12
from DOCUMENT
group by year(DOCUMENT.DOC_DATE)
Спасибо огромное сейчас попробую)
Phantom91x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос для вывода таблицы в DBGrid BattlePingvin БД в Delphi 9 14.02.2012 13:29
Почему двумерный массив отображается в виде строчки??? SkuLLL Помощь студентам 2 12.12.2010 17:06
запрос для вывода дерева. bondik SQL, базы данных 1 06.12.2010 07:50
SQL запрос для IB Лисичкина Помощь студентам 8 13.10.2010 18:14
Как сократить всю дату до вывода только года .ГГ ? jmaz Microsoft Office Excel 4 07.12.2009 12:37