SQL - поиск нескольких значений в нескольких столбцах для создания флага - PullRequest
2 голосов
/ 16 марта 2020

Я пытаюсь найти несколько значений в нескольких столбцах, чтобы создать флаг критериев включения, но не могу найти лучший способ. Мне нужно создать флаг, поэтому я пытаюсь не использовать оператор where

У меня есть это в моем коде сейчас только для одного значения, и оно работает:

when 'a' in (col1, col2, col3, col4) 
then 1 
else 0 
end as col_a

Хотел бы сделать что-то вроде, но не могу понять:

when 'a', 'b', 'c' in (col1, col2, col3, col4) 
then 1 
else 0 
end as col_all

Любая помощь приветствуется! Спасибо!

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Попробуйте это

case array_except(array['a','b','c'],array[col1,col2,col3,col4]) 
when array[] 
then 1 
else 0 
end as col_all 

enter image description here

0 голосов
/ 16 марта 2020

Это то, что вы хотите?

(case when 'a' in (col1, col2, col3, col4) and
           'b' in (col1, col2, col3, col4) and
           'c' in (col1, col2, col3, col4) 
      then 1 else 0
 end) as col_all

Немного неясно, хотите ли вы, чтобы все соответствовали или любой соответствовал. Если последнее, используйте or вместо and.

...