Почему 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 или фреймворки, позволяющие выполнять более сложные запросы.