Sql Postgres-如何将两个单独查询的结果合并到同一列中

Sql Postgres-如何将两个单独查询的结果合并到同一列中,sql,postgresql,Sql,Postgresql,我使用CTEs从两个不同的日期提取相同的列,因为我需要提取每个季度的最新日期。因此,查询如下所示: WITH Q1 AS ( SELECT date, region, revenue FROM sales WHERE date = (SELECT MAX(date) from sales WHERE date between date_trunc('quarter', CURRENT_DATE)::date - interval '3 months' AND DATE_TRUNC('quarte

我使用CTEs从两个不同的日期提取相同的列,因为我需要提取每个季度的最新日期。因此,查询如下所示:

WITH Q1 AS
(
SELECT date, region, revenue
FROM sales
WHERE date = (SELECT MAX(date) from sales WHERE date between date_trunc('quarter', CURRENT_DATE)::date - interval '3 months' AND DATE_TRUNC('quarter', CURRENT_DATE)::date - interval '1 day')
)
, Q2 AS
(
SELECT date, region, revenue
FROM sales
WHERE date = (SELECT MAX(date) FROM sales WHERE date BETWEEN DATE_TRUNC('quarter', CURRENT_DATE)::date AND DATE_TRUNC('quarter', CURRENT_DATE)::date + interval '3 months')
)
SELECT q1.date, q1.region, q1.sales, q2.date, q2.region, q2.sales
FROM Q1
INNER JOIN Q2
USING (region)
date       | region     | sales   
-----------|------------|---------
2018-03-31 | US - West  | 2387598 
2018-03-31 | US - East  | 3098527 
2018-03-31 | US - South | 1029745 
2018-06-14 | US - West  | 2389075
2018-06-14 | US - East  | 3095735
2018-06-14 | US - South | 1023754
它输出了我所期望的:

date       | region     | sales   | date       | region     | sales
-----------|------------|---------|------------|------------|----------
2018-03-31 | US - West  | 2387598 | 2018-06-14 | US - West  | 2389075
2018-03-31 | US - East  | 3098527 | 2018-06-14 | US - East  | 3095735
2018-03-31 | US - South | 1029745 | 2018-06-14 | US - South | 1023754
但是,由于它们具有相同的列,我希望它们作为行而不是额外的列进行堆叠。我希望它看起来像这样:

WITH Q1 AS
(
SELECT date, region, revenue
FROM sales
WHERE date = (SELECT MAX(date) from sales WHERE date between date_trunc('quarter', CURRENT_DATE)::date - interval '3 months' AND DATE_TRUNC('quarter', CURRENT_DATE)::date - interval '1 day')
)
, Q2 AS
(
SELECT date, region, revenue
FROM sales
WHERE date = (SELECT MAX(date) FROM sales WHERE date BETWEEN DATE_TRUNC('quarter', CURRENT_DATE)::date AND DATE_TRUNC('quarter', CURRENT_DATE)::date + interval '3 months')
)
SELECT q1.date, q1.region, q1.sales, q2.date, q2.region, q2.sales
FROM Q1
INNER JOIN Q2
USING (region)
date       | region     | sales   
-----------|------------|---------
2018-03-31 | US - West  | 2387598 
2018-03-31 | US - East  | 3098527 
2018-03-31 | US - South | 1029745 
2018-06-14 | US - West  | 2389075
2018-06-14 | US - East  | 3095735
2018-06-14 | US - South | 1023754
我知道我加入了on region,这是错误的,但我不知道没有它我如何组合CTE。

使用union all:

或者,您可以不使用CTE,只使用或: