3

我正在尝试编写一个 SELECT 语句来选择字段的总和,但我想返回小于 30 的数字总和以及大于 30 的数字总和。我意识到我可以通过将两个选择连接在一起来做到这一点,但是我希望找到一种“整洁”的方式来做到这一点。

4

3 回答 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 回答