我已经为这事挣扎了一段时间了。这与我加入MMP_PPRVU的方式有关。本质上,我试图加入CLARITY_TDL_TRAN -> CLARITY_EAP1 -> MMP_PPRVU。以及CLARITY_TDL_TRAN -> MMP_STAGING_UNITS -> MMP_PPRVU。
所有左外连接。我尝试过多种不同的方法,但无法想出一个可行的解决方案。任何帮助都是非常感谢的。
SELECT........
FROM
CLARITY.dbo.CLARITY_TDL_TRAN as CLARITY_TDL_TRAN
left outer join
dbo.MMP_STAGING_UNITS as MMP_STAGING_UNITS on MMP_Staging_Units.eTDL_ID = CLARITY_TDL_TRAN.TDL_ID and CLARITY_TDL_TRAN.DETAIL_TYPE in (1, 10)
left outer join
CLARITY.dbo.CLARITY_EAP as CLARITY_EAP on CLARITY_EAP.PROC_ID = CLARITY_TDL_TRAN.PROC_ID
left outer join
CLARITY.dbo.CLARITY_EAP AS CLARITY_EAP1 on CLARITY_EAP1.PROC_ID = CLARITY_TDL_TRAN.PROC_ID --look into this alias
left outer join
CLARITY.dbo.CLARITY_POS as CLARITY_POS on CLARITY_TDL_TRAN.POS_ID = CLARITY_POS.POS_ID
left outer join
CLARITY.dbo.CLARITY_DEP as CLARITY_DEP on CLARITY_TDL_TRAN.DEPT_ID = CLARITY_DEP.DEPARTMENT_ID
left outer join
CLARITY.dbo.CLARITY_LOC as CLARITY_LOC on CLARITY_TDL_TRAN.LOC_ID = CLARITY_LOC.LOC_ID
left outer join
dbo.mmp_PatientsTestaYes as mmp_PatientsTestaYes on CLARITY_TDL_TRAN.INT_PAT_ID = mmp_PatientsTestaYes.PAT_ID
left outer join
CLARITY.dbo.CLARITY_SA as CLARITY_SA on CLARITY_TDL_TRAN.SERV_AREA_ID = CLARITY_SA.SERV_AREA_ID
left outer join
CLARITY.dbo.CLARITY_SER as CLARITY_SER on CLARITY_TDL_TRAN.PERFORMING_PROV_ID = CLARITY_SER.PROV_ID
left outer join
CLARITY.dbo.CLARITY_EAF_TIN as CLARITY_EAF_TIN ON CLARITY_LOC.LOC_ID = CLARITY_EAF_TIN.FACILITY_ID
left outer join
dbo.MMP_PPRVU as MMP_PPRVU on MMP_Staging_Units.eFinMod = MMP_PPRVU.MOD
left outer join
dbo.MMP_revctrs$ as MMP_revctrs$ ON CLARITY_EAP.PROC_CODE = MMP_revctrs$.CPT
left outer join
MMP_PPRVU ON CLARITY_EAP_1.PROC_CODE = MMP_PPRVU.HCPCS
WHERE (CLARITY_TDL_TRAN.DETAIL_TYPE IN (1, 10)) AND (mmp_PatientsTestaYes.PAT_ID IS NULL) AND (CLARITY_EAF_TIN.LINE = 1)发布于 2014-11-04 15:01:57
我喜欢用缩进来帮助保持联接易懂。
下面可以看到,对CLARITY_EAP的第二个联接是CLARITY_EAP1的别名,但是当您试图对它进行连接时,使用的是别名CLARITY_EAP_1,它没有定义,很可能会抛出一个错误。
SELECT........
FROM CLARITY.dbo.CLARITY_TDL_TRAN as CLARITY_TDL_TRAN
left outer join dbo.MMP_STAGING_UNITS as MMP_STAGING_UNITS on MMP_Staging_Units.eTDL_ID = CLARITY_TDL_TRAN.TDL_ID and CLARITY_TDL_TRAN.DETAIL_TYPE in (1, 10)
left outer join dbo.MMP_PPRVU as MMP_PPRVU1 on MMP_Staging_Units.eFinMod = MMP_PPRVU.MOD
left outer join CLARITY.dbo.CLARITY_EAP as CLARITY_EAP on CLARITY_EAP.PROC_ID = CLARITY_TDL_TRAN.PROC_ID
left outer join dbo.MMP_revctrs$ as MMP_revctrs$ ON CLARITY_EAP.PROC_CODE = MMP_revctrs$.CPT
left outer join CLARITY.dbo.CLARITY_EAP AS CLARITY_EAP1 on CLARITY_EAP1.PROC_ID = CLARITY_TDL_TRAN.PROC_ID --look into this alias
left outer join MMP_PPRVU as MMP_PPRVU2 ON CLARITY_EAP1.PROC_CODE = MMP_PPRVU2.HCPCS
left outer join CLARITY.dbo.CLARITY_POS as CLARITY_POS on CLARITY_TDL_TRAN.POS_ID = CLARITY_POS.POS_ID
left outer join CLARITY.dbo.CLARITY_DEP as CLARITY_DEP on CLARITY_TDL_TRAN.DEPT_ID = CLARITY_DEP.DEPARTMENT_ID
left outer join CLARITY.dbo.CLARITY_LOC as CLARITY_LOC on CLARITY_TDL_TRAN.LOC_ID = CLARITY_LOC.LOC_ID
left outer join CLARITY.dbo.CLARITY_EAF_TIN as CLARITY_EAF_TIN ON CLARITY_LOC.LOC_ID = CLARITY_EAF_TIN.FACILITY_ID
left outer join dbo.mmp_PatientsTestaYes as mmp_PatientsTestaYes on CLARITY_TDL_TRAN.INT_PAT_ID = mmp_PatientsTestaYes.PAT_ID
left outer join CLARITY.dbo.CLARITY_SA as CLARITY_SA on CLARITY_TDL_TRAN.SERV_AREA_ID = CLARITY_SA.SERV_AREA_ID
left outer join CLARITY.dbo.CLARITY_SER as CLARITY_SER on CLARITY_TDL_TRAN.PERFORMING_PROV_ID = CLARITY_SER.PROV_ID
WHERE
CLARITY_TDL_TRAN.DETAIL_TYPE IN (1, 10) AND
mmp_PatientsTestaYes.PAT_ID IS NULL AND
CLARITY_EAF_TIN.LINE = 1发布于 2014-11-04 14:58:34
当您在FROM子句中给表一个别名时,将别名命名为与表名相同是非常重要的。
LEFT OUTER JOIN dbo.MMP_PPRVU AS MMP_PPRVU
ON MMP_Staging_Units.eFinMod = MMP_PPRVU.MOD此外,您可以在同一个表中加入几个join,它的名称是相同的。这两个表中的一个需要有一个与表名不同的别名。也许:
LEFT OUTER JOIN dbo.MMP_PPRVU as MMP_PPRVU_1
ON MMP_Staging_Units.eFinMod = MMP_PPRVU.MOD所以它不与:
LEFT OUTER JOIN MMP_PPRVU
ON CLARITY_EAP_1.PROC_CODE = MMP_PPRVU.HCPCS在编写FROM子句时,我发现使用稍微不同的缩进是有帮助的,这样可以使这些东西更加突出,并且更易于解析。
FROM CLARITY.dbo.CLARITY_TDL_TRAN AS CLARITY_TDL_TRAN
LEFT OUTER JOIN dbo.MMP_STAGING_UNITS AS MMP_STAGING_UNITS
ON MMP_Staging_Units.eTDL_ID = CLARITY_TDL_TRAN.TDL_ID
AND CLARITY_TDL_TRAN.DETAIL_TYPE IN (
1,
10
)
LEFT OUTER JOIN CLARITY.dbo.CLARITY_EAP AS CLARITY_EAP
ON CLARITY_EAP.PROC_ID = CLARITY_TDL_TRAN.PROC_ID
LEFT OUTER JOIN CLARITY.dbo.CLARITY_EAP AS CLARITY_EAP1
ON CLARITY_EAP1.PROC_ID = CLARITY_TDL_TRAN.PROC_ID --look into this alias
LEFT OUTER JOIN CLARITY.dbo.CLARITY_POS AS CLARITY_POS
ON CLARITY_TDL_TRAN.POS_ID = CLARITY_POS.POS_ID
LEFT OUTER JOIN CLARITY.dbo.CLARITY_DEP AS CLARITY_DEP
ON CLARITY_TDL_TRAN.DEPT_ID = CLARITY_DEP.DEPARTMENT_ID
LEFT OUTER JOIN CLARITY.dbo.CLARITY_LOC AS CLARITY_LOC
ON CLARITY_TDL_TRAN.LOC_ID = CLARITY_LOC.LOC_ID
LEFT OUTER JOIN dbo.mmp_PatientsTestaYes AS mmp_PatientsTestaYes
ON CLARITY_TDL_TRAN.INT_PAT_ID = mmp_PatientsTestaYes.PAT_ID
LEFT OUTER JOIN CLARITY.dbo.CLARITY_SA AS CLARITY_SA
ON CLARITY_TDL_TRAN.SERV_AREA_ID = CLARITY_SA.SERV_AREA_ID
LEFT OUTER JOIN CLARITY.dbo.CLARITY_SER AS CLARITY_SER
ON CLARITY_TDL_TRAN.PERFORMING_PROV_ID = CLARITY_SER.PROV_ID
LEFT OUTER JOIN CLARITY.dbo.CLARITY_EAF_TIN AS CLARITY_EAF_TIN
ON CLARITY_LOC.LOC_ID = CLARITY_EAF_TIN.FACILITY_ID
LEFT OUTER JOIN dbo.MMP_PPRVU AS MMP_PPRVU_1
ON MMP_Staging_Units.eFinMod = MMP_PPRVU.MOD
LEFT OUTER JOIN dbo.MMP_revctrs$ AS MMP_revctrs$
ON CLARITY_EAP.PROC_CODE = MMP_revctrs$.CPT
LEFT OUTER JOIN MMP_PPRVU
ON CLARITY_EAP_1.PROC_CODE = MMP_PPRVU.HCPCShttps://stackoverflow.com/questions/26738103
复制相似问题