【问题标题】:SQL Sub rows - UNION vs JOINSQL 子行 - UNION vs JOIN
【发布时间】:2021-02-24 08:13:39
【问题描述】:

我想加入 2 个表,但不复制所有数据。

尝试更清楚 我有table_A

 | ID | Description | Total 
 | 1. | Test a.     | 10
 | 2. | Test B.     |  8

我的总数是 18

表_B

|ID| Site
|1 | Site A
|1 | Site B
|2 | Site C

如果我左转

Select a.ID,a.Description,b.Site,a.Total from table_a as a 
left outer join table_b as b on a.id =b.it 

我明白了

 | ID | Description | Site  | Total 
 | 1. | Test a.     | Site A|. 10
 | 1. | Test a.     | Site B|. 10
 | 2. | Test B.     | Site C|  8

所以我的总数变成了 28

我想得到类似的东西

 | a.ID |b.ID| Description | Site  | Total 
 | 1.   |    | Test a.     |       |. 10
 | 1.   |  1 |             | Site A|
 | 1.   |  1 |             | Site B| 
 | 2.   |    | Test B.     |       |  8
 | 2.   |  2 |             | Site C| 

所以我可以在 excel 中使用它并在行中创建一个分组

【问题讨论】:

    标签: sql-server join union rows


    【解决方案1】:

    我想这就是你想要的。有几种方法可以做到这一点,一种是使用UNION 来获取 2 个数据集:

    SELECT aID,
           bID,
           description,
           Site,
           Total
    FROM (SELECT a.ID AS aID,
                 b.ID AS bID,
                 a.description,
                 b.Site,
                 NULL AS Total
          FROM dbo.TableA a
               JOIN dbo.TableB b ON A.ID = B.ID
          UNION ALL
          SELECT a.ID AS aID,
                 NULL,
                 a.description,
                 NULL,
                 a.Total
          FROM dbo.TableA a) U
    ORDER BY aID,
             bID,
             Site;
    

    db<>fiddle

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-01
      • 2017-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多