我有一个关于我想要运行的Vertica DB查询的问题。 我有一个包含5列的表,每列可以获得1或0的值, 我想要归还所有我已经结合了' 1'在一个以上的专栏中。 我添加了一张用于演示的图片,我想返回标记行的所有ID, 问候
P.S。表的值可以是1/0/2,不允许的是在同一行中获取' 1'在两条规则中。
答案 0 :(得分:1)
如果您使用布尔值作为数字,则其值为1
时为true,0
为false时。所以你可以加上比较:
SELECT id
FROM yourTable
WHERE (rule_1 = 1) + (rule_2 = 1) + (rule_3 = 1) + (rule_4 = 1) > 1
在另一个数据库中,您可以使用CASE
表达式将条件转换为数字:
SELECT id
FROM yourTable
WHERE (CASE WHEN rule_1 = 1 THEN 1 ELSE 0 END)
+ (CASE WHEN rule_2 = 1 THEN 1 ELSE 0 END)
+ (CASE WHEN rule_3 = 1 THEN 1 ELSE 0 END)
+ (CASE WHEN rule_4 = 1 THEN 1 ELSE 0 END) > 1