首页 > 解决方案 > SQL Server 2016 - 将整数列转置为逐日行

问题描述

我需要将数据日期中的一列转换为一行字符串并按另外两列分组。我的样本数据由以下数据组成:

在此处输入图像描述

我需要结果看起来像这样:

在此处输入图像描述

这是每天每个员工代码一行中的所有逻辑节点。

我尝试了以下代码 -

DECLARE @Process_Conditions_Loans VARCHAR(500)

SELECT
    t1.EmplCode,
    t1.LogDate,
    @Process_Conditions_Loans = CONCAT(COALESCE(@Process_Conditions_Loans + ',', ''),PS2)
FROM
    #temp t1
WHERE
    LN IS NOT NULL 
GROUP BY
    EmplCode, LogDate

但我收到一个错误

为变量赋值的 SELECT 语句不得与数据检索操作结合使用。

我无法使用group_concat,因为我使用的是 SQL Server 2016。

任何帮助将不胜感激。

谢谢,JH

标签: sqltsqlsql-server-2016

解决方案


您可以使用旧形式的字符串聚合:

select emplcode, logdate,
       stuff( (select concat(', ', ln)
               from t
               where t.emplcode = el.emplcode and t.logdate = el.logdate
               order by ln
               for xml path ('')
              ), 1, 2, ''
            )
from (select distinct emplcode, logdate
      from t
     ) el

推荐阅读