我有多个列具有相同的值,当我汇总它们时,它显示了不正确的结果.有没有办法用SQL编写一条CASE语句,如果列A&>0,则所有剩余的列都为0(列B、列C、列D=0)?

如果B&>列为0,则将其余所有列设置为0(A列、C列、D列=0).

第一列在该序列中获得较高的优先级.

enter image description here

enter image description here

我试着写案件陈述,但没有奏效.

推荐答案

看看这个例子是否有帮助:

SELECT a
    ,CASE WHEN a > 0 THEN 0 ELSE b END AS b
    ,CASE WHEN a > 0 OR b > 0 THEN 0 ELSE c END AS c
    ,CASE WHEN a > 0 OR b > 0 OR c > 0 THEN 0 ELSE d END AS d
FROM tbl;

Sql相关问答推荐

为什么Postgrs Planner会在输出部分中显示我在查询中不使用的列?'""

获取每5分钟时间间隔的总和

使用sede获取不一定有两个不同标签的所有问题

使用占位符向SQL INSERT查询添加 case

不同表达方式时的大小写

在SQL查询中使用COALESS

在xml.Modify方法中使用子字符串和可能的替代方法

多条件SQL排序行为

如何使用Clickhouse的COUNT聚合返回所有列,但GROUP BY是这些列的子集

Proc SQL Select Distinct SAS

在SQL中转换差异表的多列

在 Postgres 中将结果按几十年划分

获取分布在同一行的列中的出现次数

计算不同模式的时间跨度

在presto sql中解析带有区域的时间格式

如何在 ClickHouse SQL 中使用 CTE 将邻居语句中的数字作为偏移量传递?

根据条件列出不同的值

使用 SAVE TRANSACTION 时 BEGIN 和 COMMIT 语句的数量不匹配

当计数为 0 时显示行

如何在 SQL Server 中参数化 Select top 'n'