SQL Query为表中的每个不同id构建列的分隔字符串

时间:2016-06-02 05:39:46

标签: sql sql-server tsql

我有4个表,每个表有2列。

'第1列'是'One' '第2列'是'很多'

第1列有几个不同的ID,我需要以某种方式分组并构建所有“第2列”值的分隔字符串。

我需要为每个不同的“第1列”值执行此操作....这可能吗?

所以例如我有这张桌子..

DECLARE @tblDeadsData TABLE (
    [ID] INT IDENTITY(1,1) NOT NULL,
    [ContainerID] INT NULL,
    [DeadsID] INT NULL
    )

已经填充了数据,我需要为每个[ContainerID]构建一个ALL [DeadsID]的分隔字符串,然后需要将这些分隔的字符串放入此表中(DeadsDataTable Data进入tblLastMerge。在这种情况下DeadsIDList)..

CREATE TABLE tblLastMerge(
    [ID] INT IDENTITY(1,1) NOT NULL,
    [FeedLotID] INT NULL,
    [ContainerID] INT NULL,
    [ContainerName] VARCHAR(40) NULL,
    [IsMergeTargetContainer] BIT NULL,
    [PurchaseIDList] VARCHAR(1000) NULL,
    [DeadsIDList] VARCHAR(1000) NULL,
    [RailersIDList] VARCHAR(1000) NULL,
    [FeedBillIDList] VARCHAR(1000) NULL
    )

*************************** EDIT ******************* ************** 关于重复的帖子.........连接没有分隔!!!!!!难怪当我搜索我的问题时我没有看到这篇文章.....我认为你应该链接这两篇文章虽然我发现答案比(据说)原帖更简化

1 个答案:

答案 0 :(得分:0)

谢谢......我找到了答案

- 用于保存旧死亡数据的表     DECLARE @tblDeadsData TABLE(         [ID] INT IDENTITY(1,1)NOT NULL,         [ContainerID] VARCHAR(10)NULL,         [DeadsID] VARCHAR(10)NULL         )

insert into @tbldeadsdata
    values('1','2'),('1','3'),('1','4'),('2','2'),('2','3'),('2','4')


SELECT ContainerID, DeadsID = STUFF((SELECT N', ' + DeadsID 
  FROM @tblDeadsData AS p2
   WHERE p2.ContainerID = p.ContainerID 
   ORDER BY DeadsID
   FOR XML PATH(N'')), 1, 2, N'')
FROM @tblDeadsData AS p
GROUP BY ContainerID
ORDER BY ContainerID