首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UNION ALL并使用NULL填充date列

UNION ALL并使用NULL填充date列
EN

Stack Overflow用户
提问于 2021-05-18 14:32:31
回答 1查看 1K关注 0票数 1

DB-Fiddle

代码语言:javascript
复制
CREATE TABLE sales (
    id SERIAL PRIMARY KEY,
    last_order DATE,
    customer VARCHAR(255)
);

INSERT INTO sales
(last_order, customer)
VALUES 
('2020-04-10', 'user_01'),
('2020-06-15', 'user_02'),
('2020-08-26', 'user_03');



CREATE TABLE customers (
    id SERIAL PRIMARY KEY,
    first_order DATE,
    customer VARCHAR(255)
);

INSERT INTO customers
(first_order, customer)
VALUES 
('2020-03-10', 'user_01'),
('2020-05-15', 'user_02'),
('2020-01-17', 'user_03');

预期结果:

代码语言:javascript
复制
last_order   |   first_order     |
-------------|-------------------|----
2020-04-10   |                   |
2020-06-15   |                   |
2020-08-26   |                   |
             |    2020-03-10     |
             |    2020-05-15     |
             |    2020-01-17     |
             |                   |

在表sales中,我有last_order的日期,在表customers中,我有first_order的日期。

现在,我希望两个表都是UNION ALL,因此需要填充列last_order和--分别填充列first_orderNULL,以保持结构相等。

postgresSQL中,我使用此查询,该查询工作正常,没有任何问题:

代码语言:javascript
复制
SELECT
s.last_order AS last_order,
NULL AS first_order
FROM sales s

UNION ALL

SELECT
NULL AS last_order,
c.first_order AS first_order
FROM customers c

但是,当我将此查询应用于amazon-redshift时,会出现以下错误:

代码语言:javascript
复制
Invalid operation: UNION types date and text cannot be matched

如何修改amazon-redshift中的查询以达到预期的结果?

EN

回答 1

Stack Overflow用户

发布于 2021-05-18 15:25:06

一种有趣的方法是:

代码语言:javascript
复制
select s.last_order, c.first_order
from sales s full join
     customers c
     on 1 = 0;  -- never true!
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67588388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档