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 ANSI JOIN 语法-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中的全局配置文件错误

SQL Server 中的错误更新

SQL Server 2008 中的错误日志记录

SQL Server 中的函数拆分导致错误

nodejs mssql中的SQL Server连接超时错误

SQL Server 中的错误何时停止执行?