まず、完全なエラーを表示する場合、「各 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
に置き換えることさえできます
泥のように澄んでいますか?
ケヴ