如果多列为真则返回 1,如果只有一列为真则返回 0

时间:2021-07-15 16:03:22

标签: sql

我有一张如下所示的表格:

<头>
id bucket_1 bucket_2 bucket_3 bucket_4
7689 1 1 0 1
3456 1 0 1 1
4567 0 0 1 1
5677 1 0 0 0
4567 1 0 0 0

我需要做的是编写 SQK 代码来查看桶 1 到 4,如果这些列中有多个值为 1,则将其标记为 1 或 true,否则将其标记为 0 或 false . 这是我正在尝试制作的表格:

<头>
id bucket_1 bucket_2 bucket_3 bucket_4 结果
7689 1 1 0 1 1
3456 1 0 1 1 1
4567 0 0 1 1 1
5677 1 0 0 0 0
4567 1 0 0 0 0

您能帮助我们如何实现这一目标吗?我不确定如何使用 case 子句来完成。

2 个答案:

答案 0 :(得分:0)

您可以使用 case 表达式:

select t.*,
       (case when bucket_1 + bucket_2 + bucket_3 + bucket_4 > 1
             then 1 else 0
        end) as result
from t;

答案 1 :(得分:0)

你可以直接这样做:

select t.*, 
          +(bucket_1 + bucket_2 + bucket_3 + bucket_4 > 1) result 
from t
相关问题