Я пишу регистр в SQL, чтобы определить, является ли работник ветераном или супругом-ветераном. Есть три поля, которые содержат данные, и логика будет:
1) Если в любом из трех полей указан ветеран, человек является ветераном
2) Если ни один не указывает на ветеран, а последний указывает на супруга, то этот человек является супругом

Я написал заявление о ситуации, которое, кажется, работает:
CASE
WHEN Flag1 = 'Vet' THEN 'Veteran'
WHEN Flag2 = 'Vet' THEN 'Veteran'
WHEN Flag3 = 'Vet' THEN 'Veteran'
WHEN Flag3 = 'Spouse' THEN 'Veteran Spouse'
ELSE 'Non Veteran/Spouse'
END
Мне интересно, работает ли это, потому что в моих данных нет сценариев, которые вызывают сбой, а не потому, что они написаны правильно. Например, у меня нет данных, где один из первых двух флагов говорит о ветеринаре, а флаг 3 - о супруге (которого я ожидал бы показать как ветеринар). Что я хочу знать, так это: когда выражение case попадает в первое положительное положение, выполняет ли оно какие-либо действия с записью и перемещается к следующей строке или просматривает следующее, когда и предпринимает действия, если эти условия также выполнены изменение ответа (пример: если flag1 имеет значение vet, выходные данные оператора case являются Veteran. Если бы в той же строке было слово spouse в flag3, будет ли запись изменена на Veteran Spouse?)