如何将表行转换为逗号按重复值拆分

时间:2014-11-05 09:57:40

标签: sql-server

我有一张表,如下所示

enter image description here

如果" StartDate"我希望用逗号分隔列。字段与下面的字段相同

EmpID OtherReportID Status StartDate
371    2,381,2       0     2013-11-05 17:59:00:000
371     381          0     2013-11-08 17:59:00:000
371      2           0     2013-11-10 17:59:00:000
371     381          0     2014-08-15 00:00:00:000

我尝试了下面的代码,只要把数字放在同一个

select DENSE_RANK() over(order by startdate) dd,* from Emp_tb_Eob_OtherReportingManager;

3 个答案:

答案 0 :(得分:0)

您需要做的是相当于MySQL中的group_concat()

请看这个:How to make a query with group_concat in sql server

答案 1 :(得分:0)

GROUP_CONCATE(),这是你必须要看的。

试试这个;

 SELECT EmpID , GROUP_CONCAT(OtherReportID SEPARATOR ', ')
 FROM Emp_tb_Eob_OtherReportingManager GROUP BY DATE(StartDate);

注意:结果列中限制为1024个字节。

更新SQL :检查this是否可以在SQL中执行相同的操作。希望它有所帮助.. !!!!

答案 2 :(得分:0)

查询将提供预期结果

它还在SQL SERVER 2008中工作

SELECT
    T1.EmpID, T1.Status, T1.StartDate , 
    OtherReportId  = 
        stuff((
            SELECT
                ', ' + T2.OtherReportId
            FROM Employee T2
            WHERE
                T2.StartDate = T1.StartDate
            GROUP BY T2.OtherReportId
            FOR XML PATH(''), TYPE).value('.', 'varchar(max)'
        ), 1, 2, '')
FROM Employee T1 GROUP BY T1.StartDate