SQL RedShift

时间:2017-07-10 10:00:19

标签: sql amazon-web-services join conditional-statements

我要求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

1 个答案:

答案 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  

我想我得到了预期的输出。

谢谢你们