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

サブクエリを使用してグループ化するときの SQL Server 2005 エラー

    まず、完全なエラーを表示する場合、「各 GROUP BY 式には、外部参照ではない列が少なくとも 1 つ含まれている必要があります。」と表示されます。 "

    エラーを理解するには、「外部参照」 の意味を明確にする必要があります

    (注:この場合、内部結合または外部結合とは関係ありません)

    インナー そして外側 メインクエリとサブクエリを参照しています。この場合、EXISTS サブクエリであり、相関 #header.header の外部参照があるため、サブクエリ 、外部テーブル #header を参照しています 、一方 #detail への参照 内部参照と見なされます。

    要するに、CASE 外部クエリを参照する相関サブクエリを使用すると、エラー状態が発生します。これは、外部参照として解釈される GROUP BY 句で式のみを使用しようとすると、このエラー メッセージが表示されるためです。

    サブクエリはできます GROUP BY では使用できますが、相関サブクエリでは使用できません。

    紛らわしいことに、次のようなサブクエリを使用しない単純なクエリでも同じエラーが発生する可能性があります

    select 
     case when header=1 then 1 
          else 0 
     end headeris1, 
     'constant' 
    from #header 
    group by case when header=1 then 1 else 0 end , 'constant'
    

    または、定数を @variable に置き換えることさえできます

    泥のように澄んでいますか?

    ケヴ



    1. Oracle11gr2にProceduralOptionをインストールする方法

    2. 投票の合計と現在のユーザーが各投稿に投票したかどうかですべての投稿を取得します

    3. SQLSTATE[HY000][1698]ユーザー'root'@'localhost'のアクセスが拒否されました

    4. psql:サーバーに接続できませんでした:そのようなファイルまたはディレクトリはありません(Mac OS X)