我正在尝试编写一个SELECT语句来选择字段的总和,但是我希望返回小于30的数字之和以及大于30的数字之和。我意识到我可以用两个选择加入在一起,但我希望找到一种“整洁”的方式。
答案 0 :(得分:19)
沿着这些方向做某事(纠正环境的语法):
SELECT
sum(case when Field < 30 then Field else 0 end) as LessThan30,
sum(case when Field > 30 then Field else 0 end) as MoreThan30
FROM
DaTable
答案 1 :(得分:1)
如果我理解正确,你有一个具有数值的列,你想要找到字段值小于30的所有行的这个字段的总和以及字段值变化大于30的相同条件如果这是正确的,那么您可以使用以下查询并相应地重新表达表和列名称。
SELECT SUM(CASE WHEN col1 < 30 THEN COL1 ELSE 0 END
) SUM(CASE WHEN col1 < 30 THEN COL1 ELSE 0 END
) FROM DATABASE.SCHEMANAME.TABLE
谢谢, 阿图尔
答案 2 :(得分:1)
要求是一个很大的模糊,但我会假设跨行和&lt;&gt; 30.这与案例答案不同。
SELECT
SelectCol1, SelectCol2, SelectCol3, ..., SUM(AggregateCol)
FROM
Table
GROUP BY
SelectCol1, SelectCol2, SelectCol3, ...
HAVING
SUM(AggregateCol) <> 30