【问题标题】:SQL Condition not being picked up - left outer joinSQL 条件没有被拾取 - 左外连接
【发布时间】:2015-10-12 21:17:51
【问题描述】:

下面,我有一个 SQL 选择语句,但我遇到了一些问题,其中一个条件被选中。是否有另一种方法可以安排此语句以便获取条件?

条件未被拾取:

(NSTR_UI_OBJ.dte_ui_obj_end is NULL or (NSTR_UI_OBJ.dte_ui_obj_end >= '2015-10-01 00:00:00'))

完整声明:

SELECT NSTR_UI_OBJ.NAM_UI_OBJ
      ,CDE_UI_OBJ_TYP
      ,DES_UI_OBJ_LNG
      ,NVL(NSTR_UI_OBJ_CNTC.CDE_NSTR_CNTC_TYP,'')
      ,NVL(NSTR_CNTC_COMM.TXT_COMM_VALUE,'') 
FROM NSTR_UI_OBJ 
LEFT OUTER JOIN NSTR_UI_OBJ_CNTC ON NSTR_UI_OBJ_CNTC.ID_UI_OBJ = NSTR_UI_OBJ.ID_UI_OBJ 
                                AND (NSTR_UI_OBJ.dte_ui_obj_end is NULL 
                                      or (NSTR_UI_OBJ.dte_ui_obj_end >= '2015-10-01 00:00:00')
                                     )
LEFT OUTER JOIN NSTR_CNTC_COMM    ON  NSTR_UI_OBJ_CNTC.ID_NSTR_CNTC = NSTR_CNTC_COMM.ID_NSTR_CNTC
ORDER BY CDE_UI_OBJ_TYP,NSTR_UI_OBJ.NAM_UI_OBJ

【问题讨论】:

  • “捡到”?你能更详细地解释你的意思吗?输入/输出/预期会有所帮助。
  • 所以现在该语句列出了所有记录并且忽略了 DTE_UI_OBJ_END 值是什么。我希望语句只输出 DTE_UI_OBJ_END 为 NULL 或日期大于当前日期的记录。

标签: sql left-join conditional-statements outer-join


【解决方案1】:

将条件放在WHERE 子句中

SELECT NSTR_UI_OBJ.NAM_UI_OBJ, CDE_UI_OBJ_TYP, DES_UI_OBJ_LNG, NVL(NSTR_UI_OBJ_CNTC.CDE_NSTR_CNTC_TYP, ''), NVL(NSTR_CNTC_COMM.TXT_COMM_VALUE, '')
FROM NSTR_UI_OBJ
LEFT OUTER JOIN NSTR_UI_OBJ_CNTC ON NSTR_UI_OBJ_CNTC.ID_UI_OBJ = NSTR_UI_OBJ.ID_UI_OBJ
LEFT OUTER JOIN NSTR_CNTC_COMM ON NSTR_UI_OBJ_CNTC.ID_NSTR_CNTC = NSTR_CNTC_COMM.ID_NSTR_CNTC
WHERE NSTR_UI_OBJ.dte_ui_obj_end IS NULL
    OR (NSTR_UI_OBJ.dte_ui_obj_end >= '2015-10-01 00:00:00')
ORDER BY CDE_UI_OBJ_TYP, NSTR_UI_OBJ.NAM_UI_OBJ

【讨论】:

  • 我很高兴听到它奏效了,因为有人决定在不发表评论的情况下否决我的答案。
  • @jdoyle0116 请考虑accepting 和/或支持我的回答,因为它对您有用,并且可能对其他人有所帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 2015-05-13
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2016-10-02
相关资源
最近更新 更多