Sql 检查某个值是否存在,即10列中的任意4列

Sql 检查某个值是否存在,即10列中的任意4列,sql,informatica,Sql,Informatica,我希望检查10列中的任何4列中是否存在值“true”。它可以用simple if else来完成,但是有没有什么特别有效的方法,这样我就不会错过任何不使用循环的组合。 如果每行有4列为真,则将输出设置为“是”。下面是我喜欢做的事情。是否恰当则是另一回事 我将我的BIT列转换为INT并添加它们。。。true将转换为1,false将转换为0 SELECT CASE WHEN CAST(BitCol1 AS INT) + CAST(BitCol2 AS I

我希望检查10列中的任何4列中是否存在值“true”。它可以用simple if else来完成,但是有没有什么特别有效的方法,这样我就不会错过任何不使用循环的组合。
如果每行有4列为真,则将输出设置为“是”。

下面是我喜欢做的事情。是否恰当则是另一回事

我将我的
BIT
列转换为
INT
并添加它们。。。true将转换为1,false将转换为0

SELECT
    CASE 
      WHEN CAST(BitCol1 AS INT) + 
           CAST(BitCol2 AS INT) +
           CAST(BitCol3 AS INT) +
           CAST(BitCol4 AS INT) +
           CAST(BitCol5 AS INT) +
           CAST(BitCol6 AS INT) + 
           CAST(BitCol7 AS INT) + 
           CAST(BitCol8 AS INT) + 
           CAST(BitCol9 AS INT) +
           CAST(BitCol10 AS INT) >= 4
      THEN 'Yes'
      ELSE 'No'
    END

此查询将为您提供所需的结果:

SELECT IF(count(id) >= 4, 'YES', 'NO') AS OUTPUT
FROM TABLE_NAME    
WHERE 'true' in (COLUMN1, COLUMN2, ..., COLUMN10);

表\u NAME
替换为您的表,将
替换为您的表列。

请澄清您的具体问题或添加其他详细信息,以突出显示您需要的内容。正如目前所写的,很难准确地说出你在问什么。请参阅“如何询问”页面以获得帮助,以澄清此问题。看起来很简单。编写一些SQL并向我们展示您所取得的进展。