如何创建查询以将不同表中的多个行连接到SQL Server中的单个逗号delimated列

时间:2018-04-30 03:54:14

标签: sql sql-server string-concatenation

我正在使用SQL Server 2014,我有两个表:

number        id
------------------
36-23         1
36-23         2

id         value
------------------
1          asia   
2          europe         

number列的类型为varchar。我想写一个查询来返回以下结果:

number       Name   
---------------------------
36-23        asia,europe

我想知道如何借助SQL Server中的查询或函数来做到这一点。

1 个答案:

答案 0 :(得分:0)

我认为使用STUFF是最简单的方法。

CREATE TABLE tableID
    ([number] varchar(50), [id] int)
;

INSERT INTO tableID
    ([number], [id])
VALUES
    ('36-23', 1),
    ('36-23', 2)
;

CREATE TABLE tableLoc
    ([id] int, [value] varchar(50))
;

INSERT INTO tableLoc
    ([id], [value])
VALUES
    (1, 'asia'),
    (2, 'europe')
;

SELECT tableID.number, tableLoc.value INTO temp1
  FROM tableID INNER JOIN tableLoc ON tableID.id = tableLoc.id;

SELECT *, STUFF((
            SELECT DISTINCT ', ' + value
            FROM temp1
            WHERE number = t.number
            FOR XML PATH('')), 1, 2, '')
FROM (
    SELECT DISTINCT number
    FROM temp1
) t