2016-07-29 132 views
0

我有查询产生以下结果:合并两行合并到一列

GUID  ClientGUID   TASK     VALUE 

========================= ===============================================

123 15757400200  Dollar Unit   Consult Time 15 Min (Quantity):1 
123 15757400200  Dollar Unit   Patient/Family Education 15 min 
456 15757400200  Swallow Clarification Swallow therapy 30 min (Qty):1 

我希望获得下面的结果:

GUID  ClientGUID  TASK     VALUE 

123  15757400200 Dollar Unit   Consult Time 15 Min (Quantity):1 ; Patient/Family Education 15 min (Qty):1 
456  15757400200 Swallow Clarification Swallow therapy 30 min (Qty):1 
+3

您可以按照发布 在这个堆栈的其他交易所模式http://stackoverflow.com/questions/5031204/does-t-sql-have-an-aggregate-function-to-concatenate-strings/ 5031297#5031297 – grambo25

回答

0

也许这个脚本将是有益的:

SELECT GUID, ClientGUID, TASK, 
STUFF((SELECT ';' + VALUE FROM YOUR_TABLE a 
WHERE b.GUID = a.GUID FOR XML PATH('')),1 ,1, '') AS NEW_VALUE 
FROM YOUR_TABLE b 
GROUP BY GUID, ClientGUID, TASK 
0

您可以使用STUFF获得期望的结果。

 STUFF((SELECT ',' + VALUE 
        FROM tablename where "put your condition here" 
        FOR XML PATH ('') ) , 1,1,'') AS value 
+0

使用“NOLOCK”有什么用?你看到加斯东的回答了吗? – sstan

+0

我没有看到下面的代码.. :)我已经更新了我的代码..我使用NOLOCK,以便即使在表的情况下在更新模式下查询将能够获得记录 –

+0

[坏习惯:把NOLOCK无处不在]( http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) – sstan