sql >> データベース >  >> RDS >> Sqlserver

集計関数を使用したSQLGROUPBYCASEステートメント

    私の推測では、あなたは本当にGROUP BYをしたくないと思います some_product。

    回答:GROUP BYする方法はありますか この場合、some_productなどの列エイリアス、またはこれをサブクエリに入れてグループ化する必要がありますか? " is: GROUP BYはできません 列エイリアス。

    SELECT 列エイリアスが割り当てられている句は、GROUP BYが完了するまで処理されません。 句。インラインビューまたは共通テーブル式(CTE)を使用して、結果をグループ化できるようにすることができます。

    インラインビュー:

    select ...
    from (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
       from ...
       group by col1, col2 ... ) T
    group by some_product ...
    

    CTE:

    with T as (select ... , CASE WHEN col1 > col2 THEN SUM(col3*col4) ELSE 0 END AS some_product
       from ...
       group by col1, col2 ... )
    select ...
    from T
    group by some_product ... 
    


    1. MySQLデータベースにファイルを挿入する方法は?

    2. ClusterControl-高度なバックアップ管理-mariabackupパートII

    3. C#コードからMSSQL ServerへのSQLインジェクションを回避するアルゴリズム?

    4. PostgreSQLを使用して前月の最終日を確認するにはどうすればよいですか?