首页 > 解决方案 > 如何组合结果表中的 2 列?

问题描述

我写了一个相当大的 sql 查询,它连接(外连接)两个类似的查询。它们中的每一个都以以下格式返回一个表格:

date       | value1(q1)
-----------+-----------
05-06-2010 |   10
05-07-2017 |   12

第二个子查询也是如此。加入他们后,我得到下表:

date       | value1(q1) | date       | value(q2)
-----------+------------+------------+--------
05-06-2010 |    10      | NULL       | NULL
05-07-2017 |    12      | NULL       | NULL
    NULL   | NULL       | 05-07-2010 | 15
    NULL   | NULL       | 01-02-2008 | 17

我尝试将所有内容包装在 a 中CONCAT,但它不起作用。

如何以这种形式获得结果:

date       | value1(q1) | value(q2)
-----------+------------+-----------
05-06-2010 |    10      |    0  
05-07-2017 |    12      |   10 
07-08-2018 |    14      |   17

标签: sqlsql-server

解决方案


试试下面的脚本 -

SELECT [date],
SUM([value1(q1)]) AS 'value1(q1)',
SUM([value(q2)]) AS 'value(q2)'
FROM
(
    SELECT [date],
    [value1(q1)] AS 'value1(q1)', 
    0 AS 'value(q2)' 
    FROM your_table_1

    UNION ALL

    SELECT [date],
    0 AS 'value1(q1)', 
    [value(q2)] AS 'value(q2)'
    FROM your_table_2
)A
GROUP BY [date]

推荐阅读