Я хотел проверить несколько логических c вентилей, которые я написал для запроса. Рад, что я сделал, потому что я написал код в конце дня, и это оказалось относительно очевидной ошибкой.
Я хочу знать, есть ли способ сделать код чище или просто выглядеть лучше. Я думаю, что 2 области, которые могли бы использовать улучшения:
- Как я выбираю результаты. Прямо сейчас это оператор case, который возвращает 1 или 0, но есть способ просто написать что-то вроде
select (x and y)
- Как я генерирую истинные / ложные перестановки. Я подумал о том, чтобы заполнить одну временную таблицу с помощью 1/0 и повторно использовать ее с псевдонимами, но это не слишком сильно очищает.
select x, y, z, case when (x=1 and y=1 or z=1) then 1 else 0 end as ResultOne, case when (x=1 and (y=1 or z=1)) then 1 else 0 end as ResultTwo
from
( select 1 x
union
select 0 x
) as A
inner join
( select 1 y
union
select 0 y
) as B on 1=1
inner join
( select 1 z
union
select 0 z
) as C on 1=1
order by x,y,z