2017-10-06 94 views
1

我希望检查10列中的4列是否存在值“真”。它可以使用简单的方法来完成,但是有没有特定的有效方法,以便我不会错过任何组合而不使用循环。 如果每行的任何4列为真,则设置输出'是'。检查是否存在某个值是10列中的任意4列

+0

请说明您的具体问题或添加额外的细节,以确切地突出您所需要的。正如目前所写,很难确切地说出你在问什么。请参阅如何问问页面以获取帮助以澄清此问题。 –

+1

似乎很简单。写一些SQL,告诉我们你得到了多少。 – nicomp

回答

3

这就是我喜欢做的事情。是否合适是另一回事。

将我BIT列到INT并加入他们......真正转换为1和假转换为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 
+0

谢谢。投向INT应该可以解决它。 – Renee

0

该查询会给你你想要的结果:

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

用你的表格列替换TABLE_NAME,用你的表格替换COLUMN