与一个ID关联的多个记录

时间:2016-02-19 15:17:23

标签: sql-server sql-server-2014

我有一张看起来像这样的桌子......

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中处理此问题?

2 个答案:

答案 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