Почему SELECT CASE WHEN возвращает только первое значение?

SELECT CASE WHEN возвращает только первое значение потому, что это так задано в синтаксисе языка SQL. Выражение CASE WHEN используется для создания условного выражения, которое позволяет возвращать различные значения в зависимости от выполнения определенного условия.

Общий синтаксис выражения CASE WHEN выглядит следующим образом:

CASE
WHEN условие1 THEN значение1
WHEN условие2 THEN значение2
...
ELSE значениепоумолчанию
END

При выполнении выражения CASE WHEN стандартная логика состоит в том, что выражение выполняется по порядку и останавливается при первом совпадении условия. Это означает, что если условие1 истинно, то возвращается значение1 и выполнение выражения завершается. Если условие1 не истинно, тогда выполняется следующее условие, и так далее. Если ни одно из условий не выполняется, выполняется значениепо_умолчанию (если оно указано).

Таким образом, SELECT CASE WHEN возвращает только первое значение, которое соответствует первому выполненному условию, и завершает выполнение выражения. Если вам нужно вернуть все значения, удовлетворяющие условиям, вам следует использовать другую конструкцию, например, операторы UNION или фреймворки, позволяющие выполнять более сложные запросы.