Не получается написать запрос

ghost
Дата: 08.11.2000 13:21:11
Можно ли суммировать значения из таблички в зависимости от значения поля этойже таблицы?
Пример
есть таблица
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
Заранее благодарен за помощь.
С уважением Павел Олексенко.
SergSuper
Дата: 08.11.2000 13:37:26
По идее надо написать так:
select IdKln, sum(Sm), Oper
from tbl
group by IdKln, Oper

Но что бы суммы получить в два столбца, надо будет писать со вложенными запросами, что будет выглядеть не очень красиво и очень длинно. Но это уже надо думать.
Demon
Дата: 08.11.2000 14:20:29
По идее легче написать вот так:

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
Fompro
Дата: 08.11.2000 15:33:38
Маленькая правка:
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
Semen
Дата: 10.11.2000 12:02:24
Зачем так сложно. Можно просто:
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