有人可以幫我解決這個問題嗎?我需要用我的數據做兩件事。Max Date和Concatenate分開的列
- 我需要得到最大日
- 我需要連接在Proj_Use列中的值
我的數據是這樣的:
Report_Date | Program | Project | Proj_Mgr | Region | Proj_Use
6/5/2017 | PG1 | Prj01 | Anne | East | PU1
6/4/2017 | PG1 | Prj01 | Anne | East | PU2
6/3/2017 | PG1 | Prj01 | Anne | East | PU3
6/5/2017 | PG2 | Prj02 | Monica | West | PU4
6/4/2017 | PG2 | Prj02 | Monica | West | PU5
6/3/2017 | PG2 | Prj02 | Monica | West | PU6
我的結果應該看起來像這個:
Report_Date Program Project Proj_MgrRegion Proj_Use
6/5/2017 | PG1 | Prj01 | Anne | East | PU1, PU2, PU3
6/5/2017 | PG2 | Prj02 | Monica | West | PU4, PU5, PU6
我可以使用下面的代碼獲得最大日期:
SELECT t.[Report_Date]
,t.[Program]
,t.[Project]
,t.[Proj_Mgr]
,t.[Region]
,t.[Proj_Use]
FROM project_table t
JOIN
(SELECT MAX([Report_Date]) as [Report Date], [Program]
FROM project_table
GROUP BY [Program]) max
ON t.[Report_Date] = max.[Report Date]
AND t.[Program] = max.[Program]
我搜索的論壇的方式來連接,發現SQL Server的GROUP_CONCAT方法。我試着將它添加到代碼以及與此想出了:
SELECT t.[Report_Date]
,t.[Program]
,t.[Project]
,t.[Proj_Mgr]
,t.[Region]
,STUFF ((
SELECT ',' + t.[Proj_Use]
FROM project_table
FOR XML PATH ('')), 1,1, '') AS [Project Use]
FROM project_table t
JOIN
(SELECT MAX([Report_Date]) as [Report Date], [Program]
FROM project_table
GROUP BY [Program]) max
ON t.[Report_Date] = max.[Report Date]
AND t.[Program] = max.[Program]
當我試圖用我的查詢運行時間超過20分鐘,而不會產生結果的真實數據來運行這個。
任何人都可以讓我知道,如果我已經正確構造這個查詢,或者如果有更好的方法來獲得我要找的結果嗎?
感謝您的幫助。
其DB您正在使用? – scaisEdge
sql server 2014 – matt