如何编写SQL查询,按CID条件排除col3计算字段总和?
根据CID条件动态计算总和列的SQL写法
直接使用CASE语句在SELECT子句中实现条件计算,不会过滤任何目标CID的数据,完整语句如下:
SELECT col1, col2, col3, CASE WHEN CID IN (44444, 55555) THEN col1 + col2 ELSE col1 + col2 + col3 END AS total FROM table WHERE CID IN (11111, 22222, 33333, 44444, 55555);
关键说明:
CASE是SQL实现分支逻辑的常用方式,这里根据CID取值分别定义total列的计算规则- WHERE子句保留你原有的筛选逻辑,确保只获取指定CID的数据,不会误过滤44444、55555的记录
- 如果col1/col2/col3可能存在NULL值,建议用
COALESCE函数处理空值,避免总和结果为NULL,示例:CASE WHEN CID IN (44444, 55555) THEN COALESCE(col1, 0) + COALESCE(col2, 0) ELSE COALESCE(col1, 0) + COALESCE(col2, 0) + COALESCE(col3, 0) END AS total
内容的提问来源于stack exchange,提问作者San J
相关产品推荐
相关产品推荐

