2017-07-27 165 views
1

我試圖在Microsoft SQL中具有相同ID但列值不同的情況下將不同行合併爲一行。我發現了一個討論,差不多需要,但在Oracle看到linkSQL在Microsoft SQL中合併具有相同ID但列值不同的兩行

我創建的表中sql fiddle

例如,我有

UserId WorkGroup 

Bill PC-money 
Bill PC-windows 
Linus PC-free 
Linus PC-open 

我想看到

UserId WorkGroup1 WorkGroup2 
Bill PC-money PC-windows 
Linus PC-free PC-open 

我對microsoft sql的訪問權限是隻讀的

感謝您的意見

+0

關鍵詞是'PIVOT'。如何在SQL Server中轉換表格有很多問題。 –

回答

0
SELECT USERID, 
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(WORKGROUP), ',', 1), ',', -1) AS WORKGROUP1, 
if(length(GROUP_CONCAT(WORKGROUP)) - length(replace(GROUP_CONCAT(WORKGROUP), ',', ''))>=1, 
     SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(WORKGROUP), ',', 2), ',', -1) , 
     NULL)WORKGROUP2 
FROM MyTable1 
GROUP BY USERID; 

您可以在這裏查看SQL Fiddle Demo

考慮到每個USERID都有兩個條目,您可以嘗試上面的查詢。

+0

嗨,我得到這個錯誤'GROUP_CONTACT'不是一個公認的內置函數名稱。 –

+0

你正在嘗試進入MySQL? –

+0

我真的很抱歉沒有在MySQL但微軟的SQL!我會糾正討論。 –

0
Select UserID, 
Substring((Select ',' + WorkGroup From MyTable B Where B.UserID=A.UserID For XML Path('')),2,8000) As Workgroups 
From MyTable A where workgroup like '%%PC-%%' 
Group By UserID 
+0

將很好地拆分工作組1,工作組2等列。 –

+0

http://forums.sqlteam.com/t/merge-two-rows-with-same-value-but-different-column-values -in-微軟SQL /2分之11033?U = lp.descamps –

相關問題