Я новичок в Sql. Логика этих таблиц без условия IF всегда меня раздражает. У меня есть таблица (MyTable), как это:SQL Embeded Case
ID ProjectID ClassType ClassYear Amount
1 1 A 2014 0.00
2 1 A 2014 0.00
3 1 B 2014 300.00
5 1 B 2013 100.00
6 1 C 2015 200.00
7 1 A 2013 0.00
8 1 B 2015 200.00
9 1 B 2014 500.00
11 1 B 2015 230.00
....
Мой исходный код следующим образом работает отлично:
Some code
from
(
Select projectID, sum(currentyear) as CurrentYear, sum(prioryear) as PriorYear, sum(postyear) as PostYear
from
(select ProjectID,
case when Classyear = 2014 then Amount else 0 end as currentyear,
case when ClassYear <2014 then Amount else 0 end as prioryear,
case when ClassYear > 2014 then Amount else 0 end as postyear
from MyTable
where classtype = 'A'
) as subtable
group by subtable.ProjectID
)
Сейчас я хочу добавить еще вариант для ClassType в выше и не могу понять вне как. Логика должна быть:
если общая сумма от classtype A в проекте равна 0 (другими словами, эти три числа - все 0), тогда условие where должно измениться на classtype = 'B'. Если classtype B все еще 0, то используйте classtype C. (Это будет ОК, если C по-прежнему 0).
Куда я должен положить новое условие случая?
Большое спасибо.
Вы гений. Похоже, мне нужно что-то изменить с языка кодирования на SQL. Они полностью по-разному. Большое спасибо, Радар. – user3191850
Ops, на самом деле он отлично работает только для одного projectID, я хочу собрать для всех projectID. Не работайте в этой ситуации. – user3191850
@ user3191850, можете ли вы объяснить это немного больше? – radar