我在其中一个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