非常感谢那些回复的人。 SQL Server中是否有一种方法可以从table1获取数据并输出像table2这样的数据?
谢谢!
表1:
+---------+-----------+----------+------------------+
| Name | DOB | Agent ID | Agent Name |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444 | Smith |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444 | John |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444 | Larry |
+---------+-----------+----------+------------------+
表2:
+---------+-----------+----------+------------------+
| Name | DOB | Agent ID | Agent Name |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444 | Smith,John,Larry |
+---------+-----------+----------+------------------+
答案 0 :(得分:2)
对于SQL Server 2005+,请使用STUFF& FOR XML PATH创建逗号分隔列表:
SELECT DISTINCT
t.name,
t.dob,
t.agentid,
STUFF(ISNULL(SELECT ', ' + x.agentname
FROM TABLE1 x
WHERE x.agentid = t.agentid
GROUP BY x.agentname
FOR XML PATH ('')), ''), 1, 2, '')
FROM TABLE1 t
答案 1 :(得分:1)
SELECT DISTINCT t.Name, t.DOB, t.AgentID, x.AgentName FROM Table1 t CROSS APPLY (SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY AgentName) = 1 THEN '' ELSE ', ' END + AgentName FROM Table1 WHERE AgentID = t.AgentID AND AgentName IS NOT NULL FOR XML PATH(''))x(AgentName)