我已经搜索过我的问题,但是大多数示例(如果不是全部)都必须处理一个或两个表,它们之间是一对多的关系。所以,这是我的情况:
我的第一张桌子是:
OrderID Quantity Price ---------------------------------- 18 1000.00 160.00 19 1000.00 40.00 22 1000.00 40.00 23 100.00 500.00 24 10.00 50.00
我的第二张桌子是:
ExtrasID Name ------------------- 1 Value 1 2 Value 2 3 Value 3 4 Value 4 5 Value 5
我在上面的表之间建立了多对多关系,因此有第三个(联合)表,如下所示:
OrderExtrassID OrderExtras_OrderID OrderExtras_ExtrasID ---------------------------------------------------------------- 20 19 2 22 22 3 23 23 2 24 23 5
现在,我要做的就是获得如下结果:
OrderID Extras ---------------------------- 18 NULL 19 Value 2 22 Value 3 23 Value 2, Value 5 24 NULL
有很多使用XML PATH,PIVOT,CTE等的示例,但是这些似乎都没有帮助我解决我的情况,或者至少我没有深入研究它们以完成工作。
提前致谢,
我建议使用For XML将多行返回为单行,然后使用STUFF删除多余的逗号。像这样的东西:
For XML
STUFF
SELECT O.OrderId ,STUFF( ( SELECT ',' + E.Name AS [text()] FROM OrderExtras OE Inner Join Extras E ON E.ExtrasId = OE.OrderExtras_ExtrasID WHERE O.OrderId = OE.OrderExtras_OrderID ORDER BY E.Name FOR XML PATH('') ), 1, 1, '') AS ColList FROM Orders O
这是SQL Fiddle。
祝你好运。