【问题标题】:How to roll up multiple rows into a single row and column如何将多行汇总成单行和单列
【发布时间】:2020-06-28 02:15:36
【问题描述】:

我引用了This 和其他堆栈

这就是我所做的:

SELECT 
    ReportDate,  
    ReportID = STUFF((SELECT ',' + CAST(t1.ReportID AS varchar(50)) 
                      FROM BackEndEfficiency t1
                      WHERE t1.ReportID = t2.ReportID
                      FOR XML PATH ('')), 1, 1, '') 
FROM
    BackEndEfficiency t2
GROUP BY
    ReportDate

错误:

列“BackEndEfficiency.ReportID”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

为什么我会收到此错误,因为我希望 ReportDate 被分组?

数据结构示例

ReportDate  ReportID
--------------------
2020-03-11  30
2020-03-11  31
2020-03-16  32
2020-03-16  33

我想得到这个输出:

ReportDate  ReportID
--------------------
2020-03-11  30,31
2020-03-16  32,33

【问题讨论】:

  • 请不要发图片,请以文字形式发布

标签: sql sql-server


【解决方案1】:

我认为您希望 ReportDate 用于关联子句。我会推荐:

select bee.ReportDate,
       stuff((select ',' + CAST(t1.ReportID as varchar(50)) 
              from BackEndEfficiency bee2
              where bee2.ReportDate = bee.ReportDate
              for xml path ('')
             ), 1, 1, '') 
from (select bee.ReportDate
      from BackEndEfficiency bee
     ) bee;

【讨论】:

  • 应该使用 Date = Date 而不是 ID = ID。我的错。
猜你喜欢
  • 2021-08-05
  • 2020-09-08
  • 1970-01-01
  • 1970-01-01
  • 2012-01-30
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2020-10-06
相关资源
最近更新 更多