我有一个包含50列的表格。看起来像这样
GUID Field1 Field2 Field3 .... Field50
---- ------ ------ ------ -------
1 0 1 0 0
2 1 0 0 1
3 0 2 3 1
我需要找到所有记录,其中任意 50列中的两个(或更多)是>这将导致返回记录2和3。
我不确定如何解决这个问题。如果我试着测试所有的排列,那就太疯狂了。必须有一个更好的方法。
我正在使用SQL。
答案 0 :(得分:1)
您可能有错误的数据库设计。当您在多列中具有相同的数据时 - 仅通过数字后缀进行区分 - 那么这通常表明您确实需要正确的联结表。
无论如何,你可以做到这一点,它只是一个很长的case
条件:
select t.*
from t
where ((case when field1 > 0 then 1 else 0 end) +
(case when field2 > 0 then 1 else 0 end) +
. . .
(case when field50 > 0 then 1 else 0 end) +
) >= 2;
您需要使用额外的47个字段填写. . .
。