Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается написать запрос / 5 сообщений из 5, страница 1 из 1
08.11.2000, 13:21
    #32000675
ghost
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается написать запрос
Можно ли суммировать значения из таблички в зависимости от значения поля этойже таблицы?
Пример
есть таблица
IdKln Sm Oper
1 10.00 1
2 15.00 1
3 5.00 1
2 7.00 2
3 12.00 2

Надо получит результат запроса в виде

Клиент Сумма по Sm(усли Oper=1) Сумма по Sm(усли Oper=2)
(IdKln) (sum(Sm) ???????) (sum(Sm) ???????)
1 10.00 0.00
2 15.00 7.00
3 7.00 12.00
Заранее благодарен за помощь.
С уважением Павел Олексенко.
...
Рейтинг: 0 / 0
08.11.2000, 13:37
    #32000676
SergSuper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается написать запрос
По идее надо написать так:
select IdKln, sum(Sm), Oper
from tbl
group by IdKln, Oper

Но что бы суммы получить в два столбца, надо будет писать со вложенными запросами, что будет выглядеть не очень красиво и очень длинно. Но это уже надо думать.
...
Рейтинг: 0 / 0
08.11.2000, 14:20
    #32000677
Demon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается написать запрос
По идее легче написать вот так:

select IdKln,
Sum1=case when Oper=1 then Sum(Sm) else 0 end,
Sum2=case when Oper=2 then Sum(Sm) else 0 end
from tbl
group by IdKln, Oper

и получить вот это:
1 10.0 0.0
2 15.0 0.0
3 5.0 0.0
2 0.0 7.0
3 0.0 12.0
...
Рейтинг: 0 / 0
08.11.2000, 15:33
    #32000679
Fompro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается написать запрос
Маленькая правка:
SELECT A.IdKln,SUM(A.Sum1),SUM(A.Sum2) FROM
(select IdKln,
Sum1=case when Oper=1 then Sum(Sm) else 0 end,
Sum2=case when Oper=2 then Sum(Sm) else 0 end
from #Ex
group by IdKln , Oper) AS A
GROUP BY A.IdKln
...
Рейтинг: 0 / 0
10.11.2000, 12:02
    #32000694
Semen
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается написать запрос
Зачем так сложно. Можно просто:
select idkln, sum(case oper when 1 then Sm else 0 end),
sum(case oper when 1 then Sm else 0 end)
from tbl
group by idkln
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Не получается написать запрос / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]