我正在尝试编写一个 SELECT 语句来选择字段的总和,但我想返回小于 30 的数字总和以及大于 30 的数字总和。我意识到我可以通过将两个选择连接在一起来做到这一点,但是我希望找到一种“整洁”的方式来做到这一点。
matt123
问问题
14623 次
3 回答
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
于 2009-07-03T07:46:17.257 回答
1
这个要求很模糊,但我假设 SUM 跨行和 <> 30。这与案例答案不同。
SELECT
SelectCol1, SelectCol2, SelectCol3, ..., SUM(AggregateCol)
FROM
Table
GROUP BY
SelectCol1, SelectCol2, SelectCol3, ...
HAVING
SUM(AggregateCol) <> 30
于 2009-07-03T11:06:18.027 回答
1
如果我理解正确,您有一个包含数值的列,并且您想为字段值小于 30 的所有 thw 行查找该字段的总和,并且与字段值的变化大于 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
谢谢, 阿图尔
于 2009-07-03T07:53:01.313 回答