![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как грамотно представить годовой репорт? [MSSQL]
Бывающий © (2004-01-22 12:39:00)
Собственно надо расположить данные о годовых финансах примерно так:
--------------------------------------------------------------
| Jan | Feb | Mar | Jun | Jul |.....
--------------------------------------------------------------
планируемый оборот
Оборот по факту
Недополучено
Планируемый расход
....
--------------------------------------------------------------
Данные считываю запросом, проверил все считается правильно:
SELECT BudjetPeriodID, SUM(Prixod) AS Oborot, SUM(Polucheno) AS OborotFact, SUM(Debet) AS Nedopolucheno, SUM(Rasxod) AS PlannedRasx, SUM(Oplacheno) AS RasxodFact, SUM(Kredit) AS Zadolzhennost FROM dbo.BudjetsMain
WHERE (BudjetPeriodID IN
(SELECT BudjetPeriodID FROM BudjetsPeriods WHERE
BPYear = 2004))
GROUP BY BudjetPeriodID
Но, полученный рекордсет надо ТРАНСПОНИРОВАТЬ дабт выпихнуть в требуемом виде. Есть какие идеи/опыт как это проще и ПРАВИЛЬНЕЙ сделать?
ЗЫ: Используется QuickReports.
Stas (2004-01-22 13:54:00) [1]
Можешь создать таблицу Table c двумя полями:
ID,NAME:
ID 1,2,3,4...
Name планируемый оборот,Оборот по факту
А потом в своем запросе делаешь так:
Select Name,
Jun:=Case
When BudjetPeriodID=1 and Id=1 then sum () //Планируемый Оборот
...
When BudjetPeriodID=1 and Id=4 then sum (Rasxod)
...
From ButjetsMain,Table
...
Group by Table.ID, BudjetPeriodID
Stas (2004-01-22 13:51:00) [2]
Можешь создать таблицу Table c двумя полями:
ID,NAME:
ID 1,2,3,4...
Name планируемый оборот,Оборот по факту
А потом в своем запросе делаешь так:
Select Name,
Jun:=Case
When BudjetPeriodID=1 and Id=1 then sum () //Планируемый расход
...
When BudjetPeriodID=1 and Id=4 then sum (Rasxod)
...
From ButjetsMain,Table
...
Group by Table.ID, BudjetPeriodID
Academic (2004-01-22 13:48:00) [3]
В общем случае, я создаю локальный TClientDataSet.
Добавляю нужные поля и перебором заполняю в процедуре.
LordOfSilence (2004-01-22 13:29:00) [4]
Открой BOL и поищи по ключевому слову pivot table
Бывающий (2004-01-22 13:23:00) [5]
А поточнее? Как ее создать?
Johnmen (2004-01-22 12:51:00) [6]
Временная таблица в общем случае...
Бывающий (2004-01-22 12:40:00) [7]
GROUP BY BudjetPeriodID в моем случае как раз и осуществляет разбивку по месяцам.