У меня есть таблица с четырьмя полями, а именно: ID, доллар, индикатор и тип.Арифметическая операция, основанная на заявлении CASE
ID | Dollar | Indicator | Type
1 | 30 | 1 | A
1 | 20 | 1 | A
1 | 60 | 0 | A
1 | 34 | 1 | B
1 | 23 | 0 | B
1 | 45 | 0 | B
2 | 20 | 1 | A
2 | 20 | 0 | A
Теперь я хочу добавить все доллары, где индикатор равен 1, а затем вычесть их долларом с индикатором 0 для каждого идентификатора. Также в некоторых случаях они также должны быть сгруппированы по типу.
Я использовал следующий код, но, похоже, не дает правильного ответа.
proc sql;
select ID,Type,
case when Indicator = '1' then sum(Dollar) else 0 end as Credit,
case when Indicator = '0' then sum(Dollar) else 0 end as Debit
from test
group by ID,Type
;
quit;
proc sql;
select ID,Type, (Credit - Debit) as Trans
from test
group by Id, Type
;
quit;
Хорошая вещь, чтобы помнить с группой по: все должно быть группой по переменной или реферирования (сумма, среднее, граф, макс, мин и т.д.) в качестве _first_ части определения столбца. – Joe