我在其中一個SQL Server 2008查詢中遇到了令人沮喪的錯誤。它解析得很好,但當我嘗試執行時崩潰。我得到的錯誤是: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
呃。你真的想要這個代碼做什麼?你的預期產出是多少? – 2011-02-03 15:14:25
那麼,如果我刪除了兩個GROUP BY語句,查詢就會運行並返回一個包含「spid」「company」「tech_email」和「Rating」列的大型數據集。這是預期的,Group By用於刪除我認爲重複的內容。 (SQL新手,我正在用別人查詢) – Lucas311 2011-02-03 15:22:26
GROUP BY將數據分組 - 它不僅僅是「刪除重複項」。那麼你究竟想做什麼呢? GROUP BY通常與SUM,COUNT,MIN,MAX等集合一起使用 - 您似乎沒有任何其他內容,真的...... – 2011-02-03 15:24:21