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未満で、フィールド値の変動が30を超える同じ条件のすべてのthw行について、このフィールドの合計を求めたいと考えています。正しい場合は、以下のクエリを使用して、それに応じてテーブルと列の名前を置き換えることができます。

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 に答える