|
|
|
Forum Guru
      
участник
Last Login: 20.09.2007 9:51
Сообщ.: 56,
Visits: 90
|
|
| Здравствуйте. Мне надо создать такой набор данных, в котором после кождого месяца должна считаться сумма и после каждого квартала тоже должно считаться сумма. У меня получается вот такой запрос: SELECT 1 as sort, Year(dataprov) AS nYear, Month(dataprov) AS nMonth, Квартал, Число1, Число2 FROM othet UNION SELECT 3 as sort, null, null, null, sum(Число1), sum(Число2) FROM othet UNION SELECT 2 as sort, Year(Дата) AS nYear, Month(Дата) AS nMonth, квартал, sum(Число1), sum (Число2) FROM othet GROUP BY Year(Дата), Month(Дата), квартал ORDER BY nYear, nMonth, квартал, sort Но почему то суммы считаются только за месяца, а за квартал не считаются. Я пробывал вставлять в sort3 - переменную [квартал], тоже не идет. Подскажите пожалуйста. Заранее спасибо.
|
|
|
|
|
Forum Member
      
участник
Last Login: 27.02.2008 16:42
Сообщ.: 43,
Visits: 1 569
|
|
| Испoльзуйте With Rollup oпрерaтoр при пoдсчёте суммы: SELECT 2 as sort, Year(Дата) AS nYear, Month(Дата) AS nMonth, квартал, sum(Число1), sum (Число2) FROM othet GROUP BY Year(Дата), Month(Дата), квартал With Rollup
|
|
|
|
|
Forum Guru
      
участник
Last Login: 20.09.2007 9:51
Сообщ.: 56,
Visits: 90
|
|
| Так ничего не выходит, суть проблемы в том что мне нужно чтобы сначала например шли данные затем после каждого месяца считалась сумма [сумма1] [сумма2], потом опять шли данные, потом считалась сумма также за месяц и за квартила и после этого опять данные. Например: sort год мес квартал сумма1 сумма2 1 2007 1 1 1 2 1 2007 1 1 1 2 2 2007 NULL NULL 2 4 1 2007 2 1 1 2 1 2007 2 1 1 2 2 2007 NULL NULL 2 4 1 2007 3 1 1 2 1 2007 3 1 1 2 2 2007 NULL NULL 2 4
3 2007 NULL NULL 6 12 Вот такой вот набор данных надо получить. Но у меня выходит только по месяцам упарядочить, а чтобы после 3 месяцев(т.е. квартала) тоже сумма считалось и упорядочивалась как надо, вот это и не получается.
|
|
|
|
|
Forum Member
      
участник
Last Login: 27.02.2008 16:42
Сообщ.: 43,
Visits: 1 569
|
|
| Я нaдеюсь Вы смoжете применить этoт пример: create table #tmp( [Month] int, [Quarter] int, [Year] int, [Num1] int, [Num2] int) Insert into #tmp values(1,1,2006,10,5) Insert into #tmp values(1,1,2006,5,10) Insert into #tmp values(2,1,2006,10,5) Insert into #tmp values(2,1,2006,5,10) Insert into #tmp values(3,1,2006,10,5) Insert into #tmp values(3,1,2006,5,10) Insert into #tmp values(4,2,2006,10,5) Insert into #tmp values(4,2,2006,5,10) Insert into #tmp values(5,2,2006,10,5) Insert into #tmp values(5,2,2006,5,10) Insert into #tmp values(6,2,2006,10,5) Insert into #tmp values(6,2,2006,5,10) Insert into #tmp values(7,3,2006,10,5) Insert into #tmp values(7,3,2006,5,10) Insert into #tmp values(8,3,2006,10,5) Insert into #tmp values(8,3,2006,5,10) Insert into #tmp values(9,3,2006,10,5) Insert into #tmp values(9,3,2006,5,10) Insert into #tmp values(10,4,2006,10,5) Insert into #tmp values(10,4,2006,5,10) Insert into #tmp values(11,4,2006,10,5) Insert into #tmp values(11,4,2006,5,10) Insert into #tmp values(12,4,2006,10,5) Insert into #tmp values(12,4,2006,5,10) select 1 as [Sort], * from #tmp union select distinct [Sort], isnull([Month], 13) [Month], isnull([Quarter], 5) [Quarter], [Year], Num1, Num2 from (select 2 as [Sort], [Month], [Quarter], [Year], sum(Num1) Num1, Sum(Num2) Num2 from #tmp group by [Month], [Quarter], [Year] With cube) as sums where ([Year] is Not Null) and (([Quarter] Is Null and [Month] Is Null) Or ([Quarter] Is Not Null)) order by 4,3,2 drop table #tmp
|
|
|
|