Oracle 子查询中带多个条件的用例

Oracle 子查询中带多个条件的用例,oracle,subquery,conditional,case,Oracle,Subquery,Conditional,Case,1) 想要与主键或\u LOG.LOG\u ID关联的所有记录,其中或\u LOG.LOC\u ID=4060020 2) 如果列出的ID是在脚本中列出的时间之间给出的,则希望列输出“是”或“否”。真的,我想包括4种药物,如果其中任何一种给药,我会选择“是”或“否” 3) 在我添加两个时间限制之前,我能够将其应用到某种工作中,除了它似乎只显示包含正在服用的药物的行。我以为左派会解决这个问题。当我添加两个“和”时间语句时,我得到了一个“无效字符”错误 4) 我将使用不同的时间框架和不同的ID运行更

1) 想要与主键或\u LOG.LOG\u ID关联的所有记录,其中或\u LOG.LOC\u ID=4060020

2) 如果列出的ID是在脚本中列出的时间之间给出的,则希望列输出“是”或“否”。真的,我想包括4种药物,如果其中任何一种给药,我会选择“是”或“否”

3) 在我添加两个时间限制之前,我能够将其应用到某种工作中,除了它似乎只显示包含正在服用的药物的行。我以为左派会解决这个问题。当我添加两个“和”时间语句时,我得到了一个“无效字符”错误

4) 我将使用不同的时间框架和不同的ID运行更多相同类型的子查询

5) 数据库非常大,我正在尽可能提高效率

SELECT 
   CLARITY.OR_LOG.LOC_ID,
   CLARITY.V_LOG_BASED.PRIMARY_PREOP_NURSE_NM,
   CLARITY.V_LOG_BASED.PRIMARY_PROCEDURE_NM,
   CLARITY.V_LOG_BASED.PRIMARY_PHYSICIAN_NM,
   CLARITY.F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID,
   CLARITY.V_LOG_BASED.PRIMARY_RECOVERY_NURSE_NM,
   CLARITY.V_LOG_BASED.IN_OR_DTTM,
   CLARITY.V_LOG_BASED.OUT_OR_DTTM,
    Case
       When CLARITY.ORDER_MED.MEDICATION_ID = 104661
       and CLARITY.MAR_ADMIN_INFO.TAKEN_TIME  > CLARITY.V_LOG_TIMING_EVENTS.PATIENT_IN_PREPROCEDURE_DTTM
       and CLARITY.MAR_ADMIN_INFO.TAKEN_TIME < CLARITY.V_LOG_TIMING_EVENTS.PATIENT_OUT_ROOM_DTTM
       then 'YES'
       else 'NO' END AS PONV
FROM CLARITY.OR_LOG
INNER JOIN CLARITY.F_AN_RECORD_SUMMARY
ON CLARITY.OR_LOG.LOG_ID = CLARITY.F_AN_RECORD_SUMMARY.LOG_ID
INNER JOIN CLARITY.V_LOG_BASED
ON CLARITY.OR_LOG.LOG_ID = CLARITY.V_LOG_BASED.LOG_ID
left JOIN CLARITY.MAR_ADMIN_INFO
ON CLARITY.F_AN_RECORD_SUMMARY.AN_52_ENC_CSN_ID =     CLARITY.MAR_ADMIN_INFO.MAR_ENC_CSN
inner JOIN CLARITY.ORDER_MED
ON CLARITY.MAR_ADMIN_INFO.ORDER_MED_ID = CLARITY.ORDER_MED.ORDER_MED_ID
INNER JOIN CLARITY.V_LOG_TIMING_EVENTS
ON CLARITY.F_AN_RECORD_SUMMARY.LOG_ID = CLARITY.V_LOG_TIMING_EVENTS.LOG_ID
WHERE CLARITY.OR_LOG.LOC_ID           = 4060020
选择
CLARITY.OR_LOG.LOC_ID,
CLARITY.V_LOG_BASED.PRIMARY_PREOP_NURSE_NM、,
清晰度。基于日志的。主要步骤,
CLARITY.V_LOG_为基础的初级医生,
清晰性、完整性、记录性、摘要性、完整性,
CLARITY.V_LOG_为基础的主要恢复护理NM,
CLARITY.V_LOG_基于IN_或DTTM,
CLARITY.V_LOG_BASED.OUT_或_DTTM,
案例
当CLARITY.ORDER\u MED.Medicing\u ID=104661时
和CLARITY.MAR_ADMIN_INFO.taked_TIME>CLARITY.V_LOG_TIME_EVENTS.PATIENT_IN_preprocesse_DTTM
和CLARITY.MAR_ADMIN_INFO.taked_TIME
我想知道when子句中的不同标准是否应该是or'd而不是and'd?占用时间不能同时为空,也不能同时大于或小于某物。无论如何-如果“=NULL”,则必须使用“is NULL”。谢谢Jens。。。这对我很有帮助。在添加显式时间约束时,我没有对所需的代码进行任何更改。我如上所述对其进行了更改,但它仍然没有运行。我认为左连接的问题在于,它后面是左表上的内部连接。此内部联接将排除没有行满足左联接的结果。一种解决方案是使以下连接也向左。