#sql #sas #sumifs
#sql #sas #sumifs
Вопрос:
Допустим, я работаю под SAS, например, и у меня есть 2 таблицы:
Таблица1:
Id Item
1 A
1 B
1 C
2 B
2 D
3 C
3 E
3 F
Таблица 2:
Id Item Amount
1 A 99
2 C 100
1 B 100
2 A 90
1 A 93
3 B 92
1 E 93
2 B 99
1 A 93
Теперь я хотел бы взять условную сумму для моей таблицы1 из таблицы2 (когда идентификатор и элемент совпадают).
Id Item Want
1 A 285
1 B 100
1 C 0
2 B 99
2 D 0
3 C 0
3 E 0
3 F 0
Итак, что я должен делать в SQL?
Заранее спасибо.
Комментарии:
1. Я бы попробовал коррелированный подзапрос.
2. Можете ли вы объяснить подробно?
3. Можете ли вы объяснить, что вы делаете? Что это
sum conditional
значит? Вы просто просите сгруппировать по идентификатору и ЭЛЕМЕНТУ?
Ответ №1:
Используйте коррелированный подзапрос для суммирования:
select t1.Id, t1.Item,
(select sum(t2.amount) from table2 t2 where t2.id = t1.id and t2.item = t1.item)
from table1 t1
Ответ №2:
Для меня это похоже на агрегацию, с left join
:
select t1.id, t1.item,
coalesce(sum(t2.amount), 0) as want
from table1 t1 left join
table2 t2
on t1.id = t2.id and t2.item = t2.item
group by t1.id, t1.item;