我有一张看起来像这样的桌子......
ID | Cat Type | LOB
ID_1 | Cat_1 | lob_1
ID_1 | Cat_1 | lob_2
我希望看起来像这样......
ID | Cat Type | LOB
ID_1 Cat_1 LOB_1, LOB_2
如何在SQL中处理此问题?
答案 0 :(得分:1)
这是一个基本的字符串聚合查询(在SQL Server中不是那么基本)。以下是一种使用outer apply
的方法:
select id, cat_type,
stuff(tt.lob, 1, 2, '') as lobs
from (select distinct id, cat_type
from t
) t outer apply
(select ', ' + LOB
from t t2
where t2.id = t.id and t2.cat_type = t.cat_type
for xml path ('')
) tt(lob);
答案 1 :(得分:0)
或者没有外在申请:
DECLARE @Table1 TABLE (
ID nvarchar(4),
CatType nvarchar(5),
LOB nvarchar(5)
)
INSERT INTO @Table1 VALUES
('ID_1', 'Cat_1', 'lob_1'),
('ID_1', 'Cat_1', 'lob_2')
SELECT DISTINCT
ID,
CatType,
STUFF((SELECT ', ' + LOB FROM @Table1 t WHERE t.ID = ID FOR XML PATH('')), 1, 2, '') as LOB
FROM @Table1