我有三個與此SQL語句相關的表。並置SQL表,但只檢索一個?
項目
- ProjectRecordId
- 項目名
Project_CompetitionCategory
- ProjectCompetitionCategoryRecordId
- ProjectRecordId
- CompetitionCategoryRecordId
CompetitionCategory
- CompetitionCategoryRecordId
- CompetitionCategoryName
我想從我的表中檢索是ProjectRecordId, ProjectName, CompetitionCategoryName
值。
然而Project
可能會參與多個Competition Category
。我需要將這些信息排成一行,並將比賽放在自己的專欄中。
實例下
1. 1 | Project No 1 | Competition 1, Competition 2
2. 2 | Project No 2 | Competition 2, Competition 3, Competition 4
3. 3 | Project No 3 | Competition 1, Competition 4
這是我當前的SQL語句:
DECLARE @Data VARCHAR(2000)
DECLARE @pID INT
DECLARE @pName VARCHAR(300)
SELECT
@pID = Project.ProjectRecordId,
@pName = Project.ProjectName,@Data = COALESCE(@Data + ',' + CompetitionCategoryName, CompetitionCategoryName)
FROM
Project_CompetitionCategory
INNER JOIN
CompetitionCategory ON Project_CompetitionCategory.CompetitionCategoryRecordId = CompetitionCategory.CompetitionCategoryRecordId
INNER JOIN
Project ON Project_CompetitionCategory.ProjectRecordId = Project.ProjectRecordId
WHERE
Project.ProjectRecordId = 10
SELECT
@pID AS 'Project Record ID',
@pName AS 'Project Name',
@Data AS Competition,
(SELECT COUNT(ProjectRecordId) FROM Presentation WHERE ProjectRecordId = @pID) AS 'Number of Recorded Presentations'
如果我刪除
WHERE Project.ProjectRecordId = 10
則只取最後一個值和CompetitionCategory
然後搞砸了。
像下面這樣的東西。
1. 15 | Project No 15 | Competition1, Competition 2, Competition 3, Competition 2, Competition 4
我已閱讀各種回答這個計算器文章Concatenate many rows into a single text string?
和谷歌搜索找到的網站,如
- http://databases.aspfaq.com/general/how-do-i-concatenate-strings-from-a-column-into-a-single-row.html
- http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
的解決方案。然而我還是canno找到解決辦法。我正在使用SQL Server 2008 R2。我是SQL新手,想了解爲什麼無法獲取我想要的數據。
在此先感謝。
這種基於可變GROUP_CONCAT工程僅單個記錄輸出。如果你需要分組數據,[看看xml路徑('')解決方案](http://stackoverflow.com/questions/451415/simulating-group-concat-mysql-function-in-ms-sql-server -2005)。 – 2012-07-30 13:52:05