SQL Server 错误中的 GROUP_CONCAT
Posted
技术标签:
【中文标题】SQL Server 错误中的 GROUP_CONCAT【英文标题】:GROUP_CONCAT in SQL Server error 【发布时间】:2017-12-03 16:44:04 【问题描述】:错误:列“ReviewConsultants.ConsultantID”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
查询:
select
R.ReviewID,
STUFF((select distinct ',' + FirstName
from Users
where UserID = RC.ConsultantID
FOR XML PATH ('')), 1, 1, '') AS consultantlist
from
[Reviews] R, [ReviewConsultants] RC
where
R.ReviewID = RC.ReviewID
group by
R.ReviewID;
一个评论可以有一个或多个顾问。我正在尝试将每个评论的顾问放在一个用逗号分隔的列中。
注意:顾问的名字出现在 users 表中。
当我尝试运行上述查询时,我遇到了错误。非常感谢任何帮助!
【问题讨论】:
Bad habits to kick : using old-style JOINs - 旧式 逗号分隔的表格列表 样式已替换为 ANSI 中的 proper ANSIJOIN
语法-92 SQL 标准(25 年前),不鼓励使用它
【参考方案1】:
在你的情况下,你可以使用DISTINCT
:
select DISTINCT R.ReviewID, STUFF((select distinct ','+FirstName
from Users
where UserID=RC.ConsultantID
FOR XML PATH ('')), 1, 1, '')
AS consultantlist
from [Reviews] R
JOIN [ReviewConsultants] RC
ON R.ReviewID=RC.ReviewID;
请避免使用旧的连接语法。
【讨论】:
感谢您的帮助。我正在收到此结果 ReviewID 顾问列表 CD8EC961-84CF-4136-BAF3-0F0D4EF9C040 Pandurang CD8EC961-84CF-4136-BAF3-0F0D4EF9C040 Raja EC802729-402D-4F7D-B0BE-10F72C2 DIVYA EC802729-402D-4F7D-B0BE-10F72C2CF88A KOPPU MD 但我需要得到这样的 ReviewID 顾问列表 CD8EC961-84CF-4136-BAF3-0F0D4EF9C040 Pandurang,Raja EC802729-402D-4F7D-B0BE-10F7PU2CF88A DIVYA,KOPPUC2CF88A DIVYA >以上是关于SQL Server 错误中的 GROUP_CONCAT的主要内容,如果未能解决你的问题,请参考以下文章
sql SQL在发送邮件时修复SQL Server中的全局配置文件错误