简体   繁体   English

将多行合并为 1 行(但两次)

[英]Combining Multiple Rows into 1 Row (but twice)

My query looks like this:我的查询如下所示:

SELECT
    req.number
    , task.number
    , usr.vendor

FROM req
LEFT JOIN task on req.sys_id = task.req_item
LEFT JOIN usr on usr.sys_id = task.assigned_to

Results look like this:结果如下所示:

在此处输入图像描述

I want resulst to look like this:我希望结果看起来像这样:

在此处输入图像描述

I've been trying to use STUFF but I'm not getting it.我一直在尝试使用 STUFF,但我没有得到它。 Can anyone help?谁能帮忙?

Thank you谢谢

Great explanation here:这里有很好的解释:

How Stuff and 'For Xml Path' work in SQL Server? Stuff 和“For Xml Path”如何在 SQL 服务器中工作?


--sample data
CREATE TABLE #t1  (rnum VARCHAR(20) NOT NULL, tnum VARCHAR(20) NOT NULL, vendor VARCHAR (20) NOT NULL)

INSERT INTO #t1
VALUES
    ('R1','T1','A'),
    ('R1','T2','A'),
    ('R1','T3','B'),
    ('R2','T4','A'),
    ('R2','T5','A'),
    ('R3','T6','A'),
    ('R3','T6','B'),
    ('R3','T8','C');

SELECT rnum, 
    tnum = STUFF ((SELECT ',' + tnum FROM #t1  t1 WHERE t2.rnum = t1.rnum FOR XML PATH ('')), 1, 1, ''), 
    vendor = STUFF ((SELECT ',' + vendor FROM #t1 t3 WHERE t2.rnum = t3.rnum FOR XML PATH ('')), 1, 1, '' )
FROM #t1 t2
GROUP BY rnum

DROP TABLE #t1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM