如何合并来自一个表的重复数据行以仅向列中添加更多数据

时间:2019-06-06 17:52:57

标签: sql sql-server

我想采用除一列以外的所有行,其中包含重复数据,并采用一个唯一字段并将其放在一行中,并将一列添加到其中。我正在从三个要创建的数据库中创建一个表:

Wk  RunOrder   Job Number    ModelNo ....   ItemTag
23     28          1234        abcd            1
23     28          1234        abcd            2
23     28          1234        abcd            3
23     28          1234        abcd            4
12     28          1222        abbd            2
12     28          1222        abbd            4

我想要的是:

Wk  RunOrder   Job Number    ModelNo ....   ItemTag
23     28          1234        abcd          1,2,3,4
23     28          1222        abbd            2,4

RunOrder和ItemTag列来自不同的数据库

1 个答案:

答案 0 :(得分:0)

我能够使用subquery在下面获得所需的输出。我假设您想将Wk保留为分组的一部分。

if OBJECT_ID('tempdb..#temp') is not null
    drop table #temp

CREATE TABLE #temp (
    Wk int,
    RunOrder int,
    JobNumber int,
    ModelNo VARCHAR(10),
    ItemTag VARCHAR(5)
)
insert into #temp  values(23,28,1234,'abcd',1)
insert into #temp  values(12,28,1234,'abcd',2)
insert into #temp  values(23,28,1234,'abcd',3)
insert into #temp  values(12,28,1234,'abcd',4)


select distinct  Wk,RunOrder,JobNumber,ModelNo,
    SUBSTRING(
        (
            SELECT ','+t1.ItemTag  AS [text()]
            FROM #temp t1
            WHERE t1.Wk = t2.Wk and t1.RunOrder=t2.RunOrder and t1.JobNumber=t2.JobNumber and t1.ModelNo=t2.ModelNo
            ORDER BY t1.Wk
            FOR XML PATH ('')
        ), 2, 1000) t
from #temp t2

您可以使用的另一种解决方案是使用derived table