Я пытаюсь понять, как работает выражение case when exists
, есть две таблицы, одна из которых - trOrderHeader
, в которой хранится основная информация о любом заказе. Другое - trOrderLine
, в котором хранится информация о заказе, и есть столбец IsClosed
, который указывает, что ордер как-то закрыт (отменен или завершен).
Итак, мой запрос находится ниже, и я пытаюсь получить OrderLineID сСтолбец IsClosed (я могу сделать это с помощью объединений, это легко, но я пытаюсь case when exists
выражение), но весь столбец IsClosed возвращает 1;
SELECT
OrderLineId,
IsClosed =
CASE
WHEN EXISTS (select * from trOrderHeader where IsClosed=1)
THEN 1
WHEN EXISTS (select * from trOrderHeader where IsClosed=0)
THEN 0
END
FROM
trOrderLine
GROUP BY OrderLineId
Разве это не так? должен дать мне, если ордер закрыт, напишите 1, если ордер не закрыт, напишите 0?
Я неправильно понял выражение case when exists
?