我目前正在SQL Server 2012上的T-SQL中進行查詢。我通過另一個表中的連接從表中收集多個標題。我的表是這樣的:T-SQL Concat 2具有相同Id的行從連接
表項目:
ProjectId |
-----------+
1 |
2 |
3 |
表ProjectResources
ResourceId | Label | ProjectId
-----------+---------------+-----------
2 | Resource X | 1
3 | Resource Y | 1
4 | Resource Z | 2
5 | Resource A | 2
6 | Resource X | 3
的期望在我的臨時表輸出應該是這樣的:
ProjectId | Label |
-----------+--------------------------+
1 | Resource X, Resource Y |
2 | Resource Z, Resource A |
3 | Resource X |
我想要連接所有標籤使用相同的ProjectId。我目前的查詢是這樣的:
CREATE TABLE #tmpProjects
(
ProjectId INT
, Label VARCHAR(1000)
)
SELECT [P].ProjectId, [PR].Label
INTO #tmpProjects
FROM [MySchema].[ProjectResources] [PR]
INNER JOIN dbo.Project [P] ON [P].ProjectId= [PR].ProjectId
不幸的是我的查詢爲每個Resouce標籤創建一個新行。你知道如何爲每個擁有相同ProjectId的資源創建一個具有「concatinated」合併行的新臨時表嗎?
非常感謝!
你問如何連接列,不能行。 Aaron Bertrand在[SQL Server中的分組連接](https://sqlperformance.com/2014/08/t-sql-queries/sql-server-grouped-concatenation)中描述和測試了各種技術。最快的技術使用SQLCLR,第二快的XML。 'STRING_AGG'將在下一版本的SQL Server中本地支持,SQL Server 2017 –