Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Пожалуйста, помогите с rollup  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Забодался уже, выдаёт итог рядом лежащего столбца:

вот код:
use buxbaza

select Субконто1 as aaa,Субконто2 as bbb,sum(СНД) as SND, 
case when sum(СНД) > 0 then sum(СНД) else 0 end as SKK --into #temp_table2

from (
	select sc0 as Субконто1,
	sc1 as Субконто2,
	sd as СНД
	from _1sbkttl ttl (nolock) 
	where (accid = '    C8   ') and (date = '20090701') and (kind = '1') and (sd <> 0)
	union all 
	select dtsc0 as Субконто1,dtsc1 as Субконто2,
	sum_ as СНД
	from _1sentry (nolock) where (accdtid ='    C8   ') and 
	(date_time_docid between '20090701' and '20090701Z') and (provkind = ' ') and (active = ' ')
	union all 
	select ktsc0 as Субконто1,ktsc1 as Субконто2,
	-sum_ as СНД
	from _1sentry (nolock) where (accktid ='    C8   ') and 
	(date_time_docid between '20090701' and '20090701Z') and (provkind = ' ') and (active = ' ')) t
group by Субконто1,Субконто2 with rollup

Итоговая строчка відаёт для SKK ту же цифру, что и для SND, хотя данные то там совсем разные.

Пример таблицы
-1 NULL
10 10
-5 NULL
8 8
-----------------
12 12

Как видите rollup выдаёт одно и то же значение для обоих столбцов.
В чём я ошибся? Спасибо.
27 окт 09, 13:57    [7844424]     Ответить | Цитировать Сообщить модератору
 Re: Пожалуйста, помогите с rollup  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
Удивительно. Вы сами написали, чтобы выдавалось одно и то же значение, а потом удивляетесь, что оно таки и правда одно и то же.
um(СНД) as SND, 
case when sum(СНД) > 0 then sum(СНД) else 0 end as SKK
27 окт 09, 14:02    [7844464]     Ответить | Цитировать Сообщить модератору
 Re: Пожалуйста, помогите с rollup  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Гавриленко Сергей Алексеевич
Удивительно. Вы сами написали, чтобы выдавалось одно и то же значение, а потом удивляетесь, что оно таки и правда одно и то же.
um(СНД) as SND, 
case when sum(СНД) > 0 then sum(СНД) else 0 end as SKK


Я же написал, чтобы в колонку SNK попадали только положительные цифры, а отрицательные туда не попадали. Ну а rollup-ом просуммировать уже итоговую таблицу. Ведь так же оно должно быть?
А SQL суммирует и отрицательные и положительные. Я же привёл пример таблицы.
27 окт 09, 14:07    [7844503]     Ответить | Цитировать Сообщить модератору
 Re: Пожалуйста, помогите с rollup  [new]
Anddros
Member

Откуда:
Сообщений: 1077
Оборачивайте еще в один подзапрос для rollup:

select aaa,bbb,sum(SND) as SND, sum(SKK) as SKK
from (
select Субконто1 as aaa,Субконто2 as bbb,sum(СНД) as SND, 
case when sum(СНД) > 0 then sum(СНД) else 0 end as SKK
...
group by Субконто1,Субконто2 
)t
group by Субконто1,Субконто2 with rollup

Если, конечно, я правильно понял, что именно вам нужно...
27 окт 09, 14:09    [7844526]     Ответить | Цитировать Сообщить модератору
 Re: Пожалуйста, помогите с rollup  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
RSRuslan
Гавриленко Сергей Алексеевич
Удивительно. Вы сами написали, чтобы выдавалось одно и то же значение, а потом удивляетесь, что оно таки и правда одно и то же.
um(СНД) as SND, 
case when sum(СНД) > 0 then sum(СНД) else 0 end as SKK


Я же написал, чтобы в колонку SNK попадали только положительные цифры, а отрицательные туда не попадали. Ну а rollup-ом просуммировать уже итоговую таблицу. Ведь так же оно должно быть?
А SQL суммирует и отрицательные и положительные. Я же привёл пример таблицы.
Может быть вы и хотели это написать, но написали то, что написали. А именно: в поле SKK будет либо сумма поля СНД, либо 0.
27 окт 09, 14:10    [7844534]     Ответить | Цитировать Сообщить модератору
 Re: Пожалуйста, помогите с rollup  [new]
RSRuslan
Member

Откуда: Киев
Сообщений: 173
Anddros
Оборачивайте еще в один подзапрос для rollup:

select aaa,bbb,sum(SND) as SND, sum(SKK) as SKK
from (
select Субконто1 as aaa,Субконто2 as bbb,sum(СНД) as SND, 
case when sum(СНД) > 0 then sum(СНД) else 0 end as SKK
...
group by Субконто1,Субконто2 
)t
group by Субконто1,Субконто2 with rollup

Если, конечно, я правильно понял, что именно вам нужно...


Спасибо! То, что нужно!!!
27 окт 09, 15:20    [7845049]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить