将多行连接成一个字符串

时间:2015-06-23 12:08:48

标签: sql-server

我使用的是SQL Server 2008 R2 Enterprise 64位。

我的问题是:

我有两个表t1和t2,一个有Id列,另一个有名称列

我可以查询它们,以便得到以下结果:

ID     Name
1      bob
1      ted
2      bill
3      frank

我想要的是看起来像这样的结果:

ID     name
1      bob ted
2      bill
3      frank

名称列可以包含1到n个名称

我真正需要做的是转动第二列。我已经使用了强制转换为xml和stuff函数,但这些并不适用于我需要的东西。

我尝试编写一个数据透视功能,但收到错误信息。

SELECT ID, name As name   
FROM

(SELECT   ID, name 
 FROM dbo.t1 AS t1 
             INNER JOIN
             dbo.t2 AS t2 ON t1.ID = t2.ID                         
             WHERE  (some filter)
AS s
PIVOT
(
  max(name)
  FOR
  [name]
  IN ( [name]
)) AS p

提前致谢:)

2 个答案:

答案 0 :(得分:3)

一种方法是您可以通过带有FOR XML PATH的子查询连接第二个表。

DECLARE @t1 TABLE (ID INT)
INSERT @t1 VALUES (1),(2),(3)
DECLARE @t2 TABLE (ID INT, Name VARCHAR(50))
INSERT @t2 VALUES (1,'bob'),(1,'ted'),(2,'bill'),(3,'frank')

SELECT
    T1.ID,
    LTRIM((SELECT ' ' + Name AS [text()] FROM @t2 WHERE ID = T1.ID FOR XML PATH(''))) AS name
FROM @t1 T1
-- WHERE (filter here)

以下是样本的结果:

ID          name
----------- --------------------
1           bob ted
2           bill
3           frank

答案 1 :(得分:1)

background-repeat:no-repeat:
background-position:center top;
background-attachment:fixed;