Запрос на подсчет суммы
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Запрос на подсчет суммы Expand / Collapse
Автор
Сообщение
19.01.2007 8:31
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum 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 - переменную [квартал], тоже не идет.

Подскажите пожалуйста. Заранее спасибо.

Сообщ. #909869
19.01.2007 16:48
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum 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

Сообщ. #909899
22.01.2007 6:54
Forum Guru

Forum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum GuruForum 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 месяцев(т.е. квартала) тоже сумма считалось и упорядочивалась как надо, вот это и не получается.

Сообщ. #909932
22.01.2007 18:20
Forum Member

Forum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum MemberForum 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

Сообщ. #909946
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl, Alexey Spirin

Время GMT +3:00, Сейчас 1:14