Кажется, вам просто нужна обработка NULL. Учитывая, что вы в настоящее время используете ORACLE в качестве продукта СУБД, вы можете попробовать выполнить следующий запрос:
SELECT
Primary_Key,
Detail_Flag,
Flag_A,
Flag_B,
CASE WHEN Detail_Flag=0 THEN
CASE WHEN NVL(Flag_A, 1) = 1 AND NVL(Flag_B, 1) = 1 THEN 1
ELSE 0 END
END AS IsCommercialFlag,
CASE WHEN NVL(Flag_A, 1) = 1 AND NVL(Flag_B, 1) = 1 THEN 'Yes'
ELSE 'No'
END
AS IsCommercialFlagCaption
FROM TableFlags
WHERE Primary_Key IN (123, 456)
ORDER BY Primary_Key, Detail_Flag
Если вы используете MySQL, просто замените NVL
на IFNULL
, для пользователя SQL SERVER ISNULL.