我正在努力创建一个查询,并希望从那些比我更聪明的人那里得到一些指导。我正在尝试编写一个查询,以便在DRG代码= 005时,从该查询中获取所有HOSP_ADMT_DT,然后在没有DRG = 5条件的情况下再次查询一般声明表并提取所有30天或之前的声明在录取日期之后录取日期和180天或更短时间,然后加入结果。
编辑: 我正在寻找的结果将运行下面的查询。我需要这个结果。然后获取下面查询产生的所有会员ID和Admit日期,并执行一个查询,在没有DRG条件= 005的情况下拉出所有原始字段,但是有成员ID的标准有DRG 5并且允许日期然后拉来自此子集的所有声明以及范围允许日期(定义为:HOSP_ADMT_DT) - 30和允许日期+ 180的所有声明.CLM_LN_SVC_FROM_DT ,CLM_LN_SVC_TO_DT - 由
定义SELECT CLM_MED_DETL_ID
,CLM_ID_TXT
,CLM_SRC_CD
,CLM_LN_SEQ_NUM
,MBR_ID
,MBR_LST_NAME
,MBR_FST_NAME
,SVCG_PROV_ADDR_ZIP_CD
,SVCG_PROV - ADDR_CNTY
,SBMTD_DRG_CD
,HOSP_ADMT_DT
,HOSP_DSCHRG_DT
,RVNU_CD
,CLM_LN_UNITS_NUM
,CLM_LN_CHRG_AMT
,CLM_LN_ALWD_AMT
,CLM_LN_PD_AMT
,TIN_TXT
,HOSP_ADMT_DT
,CLM_LN_SVC_FROM_DT
,CLM_LN_SVC_TO_DT
FROM CLM_MED_DETL
WHERE TIN_TXT IN ( 'A', 'B' )
AND SBMTD_DRG_CD = '005'
AND CLM_SRC_CD = 'TRG_FA'
ORDER BY MBR_LST_NAME ASC
,CLM_LN_SEQ_NUM ASC;
答案 0 :(得分:0)
尝试这样的事情
... WHERE (SBMTD_DRG_CD='005' OR (SBMTD_DRG_CD <>'005 AND (claim is > 30 days OR laim.date < (180 + admit.date)) ))
我不知道您的日期是如何存储的。 (对不起,写在手机上,无法格式化代码)
答案 1 :(得分:0)
我认为你需要这样的事情:
CD_005
子查询返回DRG条件= 005的医疗详细信息,我还在那里包含了您的附加条件,您可能需要修改它们CD_ANY
别名包含该表中的所有记录当我们在MBR_ID
和HOSP_ADMT_DT
范围内加入这些别名时,我们会收到[-30; +180]日期范围内的所有记录,这些日期范围为'005'对于曾经拥有'005'的客户的声明声称。
WITH CD_005 as (
SELECT MBR_ID, HOSP_ADMT_DT
FROM CLM_MED_DETL
WHERE TIN_TXT IN ( 'A', 'B' )
AND SBMTD_DRG_CD = '005'
AND CLM_SRC_CD = 'TRG_FA'
)
SELECT CLM_MED_DETL_ID
,CLM_ID_TXT
,CLM_SRC_CD
,CLM_LN_SEQ_NUM
,CD_ANY.MBR_ID
,MBR_LST_NAME
,MBR_FST_NAME
,SVCG_PROV_ADDR_ZIP_CD
,SVCG_PROV - ADDR_CNTY
,SBMTD_DRG_CD
,CD_ANY.HOSP_ADMT_DT
,HOSP_DSCHRG_DT
,RVNU_CD
,CLM_LN_UNITS_NUM
,CLM_LN_CHRG_AMT
,CLM_LN_ALWD_AMT
,CLM_LN_PD_AMT
,TIN_TXT
,HOSP_ADMT_DT
,CLM_LN_SVC_FROM_DT
,CLM_LN_SVC_TO_DT
FROM CLM_MED_DETL CD_ANY
JOIN CD_005
on CD_ANY.MBR_ID = CD_005.MBR_ID
and CD_ANY.HOSP_ADMT_DT >= CD_005.HOSP_ADMT_DT - 30
and CD_ANY.HOSP_ADMT_DT <= CD_005.HOSP_ADMT_DT + 180
ORDER BY MBR_LST_NAME ASC
,CLM_LN_SEQ_NUM ASC;
希望它运行良好并且真的有帮助,我无法检查它,因为我没有这样的表。