首页 > 解决方案 > 如果多列为真则返回 1,如果只有一列为真则返回 0

问题描述

我有一个如下所示的表:

ID 桶_1 桶_2 桶_3 桶_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

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

ID 桶_1 桶_2 桶_3 桶_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 子句来完成。

标签: sql

解决方案


您可以使用case表达式:

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

推荐阅读