SQL服务器:加入并追加列(SQL Server : join and append columns

2019-09-23 02:56发布

我有一个SQL问题,希望有人能帮助我或者给我一些指点。 非常感激。

我有两个表:A和B.

  • A具有列ID ,其是主键字段,和NAME
  • B具有列DUPIDNAMEID ,其是主键

A和B之间的关系是在B中, DUPID包含的某些值A.ID ,并且该请求是要追加不同B.NAMEA.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

Answer 1:

不同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演示



文章来源: SQL Server : join and append columns