0

我有連接多個表的T-SQL查詢。我在SSRS中將其用作數據集查詢。我只選擇了兩列,ID和名稱。我有三個具有相同「ID」值的記錄,但有三個不同的「名稱」值。在SSRS中,我得到了第一個「名稱」值,我需要使用相同的ID將所有三個值連接起來,並將它放在一個表格的一個單元格中。SSRS - T-SQL - 連接多行

我該怎麼做呢?

我正在使用lookup來組合cube + sql 直接從表中拉ID,但使用Case語句來獲取名稱來定義別名。

回答

1

您可以在TSQL中使用PIVOT將它們作爲單獨的列來完成,然後您可以在報告單元格中組合它們,也可以使用these連接方法之一獲取一列中的所有名稱。

例如,你可以這樣做:

SELECT SomeTableA.Id, 
     STUFF(
      (SELECT ',' + SomeTableB.Names AS [text()] 
      FROM SomeTable SomeTableB 
      WHERE SomeTableB.Id = SomeTableA.Id 
        FOR XML PATH('')), 1, 1, '') 
     AS ConcatenatedNames 
FROM SomeTable SomeTableA 
INNER JOIN AnotherTable 
    ON SomeTableA.Id = AnotherTable.SomeId 
... 
+0

我有一個以上的列(我剛纔提到的標識和名稱在這個例子中,我不希望每一個行支點爲列我只是想。將一列記錄合併到一個單元格中的字符串中,對於一個ID,我有三行(SAME ID VALUES),然後再增加一個名字列(3個不同的名字)。這個T-SQL代碼將在SSRS中使用,所以它我不能工作,我也通過INNER JOIN獲得來自MULTIPLE表的數據我被卡住了 – 007

+0

使用FOR XML PATH在TSQL中進行連接肯定會爲你工作SSRS只是將查詢傳遞給數據庫,所以任何有效的SQL都會你也可以將這個邏輯轉移到存儲過程中,從報告中推薦(推薦)。 [Here](http://sqlandme.com/2011/04/27/tsql-concatenate-rows-using-for-xml-path/)是另一個鏈接,它可以更清楚地表明串聯。查看更新的答案,瞭解如何執行此操作,包括與另一個表的聯接。 – PinnyM