如何在Vertica DB中验证组合

时间:2018-01-14 07:47:19

标签: database validation vertica

我有一个关于我想要运行的Vertica DB查询的问题。 我有一个包含5列的表,每列可以获得1或0的值, 我想要归还所有我已经结合了' 1'在一个以上的专栏中。 我添加了一张用于演示的图片,我想返回标记行的所有ID, 问候

P.S。表的值可以是1/0/2,不允许的是在同一行中获取' 1'在两条规则中。

enter image description here

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

DEMO

在另一个数据库中,您可以使用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