SQL Server 2008类似于group_concat主题,填充了两个单独的表格



对不起...第一次在这里和业余...

我有两个不同的表(contact_data_a和contact_data_b),来自两个不同的部门,如下:

contact_data_a      
id  customer    contact
11200   Müller KG   Hans
11201   Huber GmbH  Patrick
11203   Gruber GmbH Manu
11205   Meyer GmbH  Manu
contact_data_b      
id  customer    contact
11200   Müller E.   Peter
11202   Schubert AG Louis
11204   E.Schmidt   Louis
11205   Mayer GmbH  Peter

最终我想拥有的是这样的:

contact_data_all            
id  customer    contact_a   contact_b
11200   Müller KG   Hans    Peter
11201   Huber GmbH  Patrick 0
11202   Schubert AG 0   Louis
11203   Gruber GmbH Manu    0
11204   E. Schmidt  0   Louis
11205   Meyer GmbH  Manu    Peter

" ID"是清晰且独特的,但是"客户"中的名称可能会有所不同(包括拼写错误)。这没问题。信息可以来自任一表。我的问题是联系列。列表contact_data_a的联系人应显示在Contact_A(如果不存在的情况下)中,并且来自列表contact_data_b的联系人应显示在contact_b(或null)中。

一个朋友说我可能会使用

    `SELECT id, customer, GROUP_CONCAT(contact_a) as contact_a,GROUP_CONCAT(contact_b) as contact_b FROM
(SELECT id, customer, contact_a, null as contact_b FROM contact_data_a
UNION
SELECT id, customer, null as contact_a, contact_b FROM contact_data_b) 
GROUP BY id ORDER BY id`

,但我只有SQL 2008,因此尚不可用。预先感谢您的任何帮助或想法!

尝试这个 -

SELECT
      id
    , customer
    , MAX(contact_a) AS contact_a
    , MAX(contact_b) AS contact_b 
FROM (
    SELECT id, customer, contact_a, '0' AS contact_b 
    FROM contact_data_a
    UNION ALL
    SELECT id, customer, '0' AS contact_a, contact_b 
    FROM contact_data_b
) t
GROUP BY id, customer
ORDER BY id

最新更新