将多行值组合成一行

时间:2014-05-02 15:36:51

标签: sql sql-server tsql reporting-services

我有一个结果集应该作为一行拉入报表。但是,可能有多个买方与订单关联,这些买方表示为数据库中的新行。例如,我有以下内容......

SELECT
   O.OrdersID
   ,BS.LastName
FROM
   Orders O
LEFT JOIN 
   BuyerSeller BS ON O.OrdersID = BS.OrdersID

如果有多个买家,它将返回以下结果集:

OrdersID | LastName 
----------------------
1        | Tester1
1        | Tester2 
1        | Tester3 

我希望它返回如下(以列分隔):

OrdersID | LastName 
---------------------------------------
1        | Tester1, Tester2, Tester3

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这是你的答案。

SELECT DISTINCT Ord.OrderID , substring
                         ((SELECT        ',' + BS.LastName AS [text()]
                             FROM    Orders O   LEFT JOIN BuyerSeller BS       ON O.OrderID = BS.OrderID
                             ORDER BY  O.OrderID FOR XML PATH('')), 2, 1000) LastName

FROM Orders ord

这将返回预期的输出。

答案 1 :(得分:0)

要在SSRS中完成此操作,您需要

  1. 创建一个表,其中OrdersID为行组

  2. 确保组内有无详细信息。如果有一个删除它而不删除行。

  3. LastName写下费用

  4. =Join(Lookupset(Fields!OrdersID.Value, Fields!OrdersID.Value, Fields!LastName.Value, "myDataSet"), ", ")

    请记住,SSRS 区分大小写