2012-09-27 83 views
1

我有一個SQL問題,並希望有人可以幫助我或給我一些指針。非常感激。SQL Server:加入並追加列

我有兩個表:A和B.

  • A具有列ID這是主鍵字段,和NAME
  • B具有列DUPIDNAMEID哪個是主鍵

A和B之間的關係在B中,DUPID包含某些值A.ID,並且請求是附加不同的B.NAME值到A.NAME分號加分A.ID = B.DUPID ..

也許我的解釋不清楚,下面是一個簡單的例子。

A         B 
ID NAME       DUPID  NAME 
1 null       1    John 
2 null       1    John 
3 null       1    Mark 
4 null       3    Luke 
5 null       3    Luke 
            3    Luke 
            3    Matthew 

所以最終,我將需要更新表A,並使它看起來像下面

A 
ID  NAME 
1  John;Mark 
2  null 
3  Luke;Matthew 
4  null 
5  null 
+0

MS SQL Server 2008和中感謝模擬。 – John

+0

類似:http://stackoverflow.com/questions/10553198/merge-multiple-rows-into-a-single-row/10553404#10553404 – SQLMason

回答

4

不像MySQLSQL Server沒有內置功能來做到這一點。但是,你仍然可以通過使用CROSS APPLYFOR XML PATH('')

SELECT a.ID, 
     SUBSTRING(d.NameList,1, LEN(d.NameList) - 1) Names 
FROM a 
     CROSS APPLY 
     (
      SELECT DISTINCT [NAME] + '; ' 
      FROM B 
      WHERE A.ID = B.DupID 
      FOR XML PATH('') 
     ) D (NameList) 

SQLFiddle Demo