Можете ли вы научить меня, что я делаю неправильно в моем случае? :)SQL Server: case when where where where
Я выбираю счета-фактуры и погашения.
Ошибка:
Msg 4145, Level 15, State 1, Line 10
выражение не-логического типа, указанного в контексте, в котором условие, как ожидается, рядом с 'концом'.
Код:
select
I.subject1, R.subject2
from
dbo.invoice I
left join
dbo.repayments R on I.subject1 = R.subject2
where
case
when R.subject2 is not null and R.remains_due > 0
then R.remains_due
when R.subject2 is not null and R.remains_due = 0
then I.remains_due
when R.subject2 is not null and R.due_date <= GETDATE()
then R.due_date
when R.subject2 is null and I.due_date <= GETDATE()
then I.due_date
end
Как правило, лучше использовать 'AND' /' OR' вместо выражений 'case' в предложении' WHERE'. – jarlh
Ваше выражение case возвращает значение, теперь вам нужно сравнить его с чем-то. – jarlh
Мне нужно «дело», потому что «тогда» для меня важно. Сравните вы сказали? Не могли бы вы рассказать мне больше об этом? – otesanek