SQL Server 2008のクエリのうちの1つで不満を感じています。それは正常に解析されますが、実行しようとするとクラッシュします。私が手にエラーは次のとおりです:SQL ServerのGROUP BYトラブルが発生しました。
8120メッセージ、レベル16、状態1、行4それ はいずれにも含まれていないため 「customertraffic_return.company」は、選択リストに無効 ある
コラム 集約関数またはGROUP BY 節。
SELECT *
FROM (SELECT ctr.sp_id AS spid,
Substring(ctr.company, 1, 20) AS company,
cci.email_address AS tech_email,
CASE
WHEN rating IS NULL THEN 'unknown'
ELSE rating
END AS rating
FROM customer_contactinfo cci
INNER JOIN customertraffic_return ctr
ON ctr.sp_id = cci.sp_id
WHERE cci.email_address <> ''
AND cci.email_address NOT LIKE '%hotmail%'
AND cci.email_address IS NOT NULL
AND (region LIKE 'Europe%'
OR region LIKE 'Asia%')
AND SERVICE IN ('1', '2')
AND (rating IN ('Premiere', 'Standard', 'unknown')
OR rating IS NULL)
AND msgcount >= 5000
GROUP BY ctr.sp_id,
cci.email_address) AS a
WHERE spid NOT IN (SELECT spid
FROM customer_exclude)
GROUP BY spid,
tech_email
のErm。このコードで実際に何をしたいですか?期待される成果は? –
2つのGROUP BYステートメントを削除すると、クエリが実行され、 "spid" "company" "tech_email"と "Rating"という列の大きなデータセットが返されます。これは予想されるもので、Group Byは私が信じる複製を削除するために使用されます。 (新しいSQLと私は誰かがelsesクエリで働いています) – Lucas311
GROUP BYはデータをグループ化します - 単に "重複を取り除く"だけではありません。だから、まさにあなたはそうしようとしているのですか? GROUP BYは、SUM、COUNT、MIN、MAXなどの集約で通常使用されます - あなたはそれを持っていないようです。 –