我要求name和id的cloumn值在“b.end_dt< c.report_mnth”(小于)else“b.end_dt> c.report_mnth”(大于)时返回null列应显示该值。我无法在单个查询中实现此目的。我正在尝试这个Amazon Redshift数据库。我已经尝试了一些案例条件,但我仍然无法实现这个
到目前为止,我准备了一个查询,在“b.end_dt< c.report_mnth”(小于)
的情况下,返回name和id为null查询我尝试了
SELECT null as name, null as id, b.strt_dt, b.end_dt from demo.v a
LEFT JOIN demo.emp_pos b on (a.pos_sk1=b.pos_sk and a.pos_id1=b.pos_id)
JOIN demo.load_status c on b.end_dt < c.report_mnth
请帮助解决这个问题,或至少需要一个线索来完成此任务。 提前致谢
预期输出
name id strt_dt end_dt
2015-04-12 2016-04-18
2015-04-12 2016-04-18
2015-04-12 2016-04-18
2015-04-12 2016-04-18
2015-04-12 2016-04-18
2015-04-12 2016-04-18
2016-02-02 2016-03-08
2016-02-02 2016-03-08
2016-02-02 2016-03-08
2016-02-02 2016-03-08
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
john ma abc12 2014-11-30 9999-12-31
答案 0 :(得分:0)
请让我知道我的答案是否正确实际上我准备了两个选择查询,其中第一个查询的连接条件是检查少于“b.end_dt&lt; c.report_mnth”并返回2列的空值( name,id)和第二个查询是检查大于ie b.end_dt&gt; c.report_mnth并返回这两列(name,id)的实际值。我实现了这个“UNION ALL”
查询
SELECT null as name,null as id, b.strt_dt,b.end_dt from demo.v a LEFT JOIN demo.emp_pos b on
( a.pos_sk1=b.pos_sk and a.pos_id1=b.pos_id) JOIN demo.load_status c on
b.end_dt < c.report_mnth
UNION ALL
SELECT null as name,null as id, b.strt_dt,b.end_dt from demo.v a LEFT JOIN demo.emp_pos b on
( a.pos_sk1=b.pos_sk and a.pos_id1=b.pos_id) JOIN demo.load_status c on
b.end_dt > c.report_mnth
我想我得到了预期的输出。
谢谢你们