[英]SQL Conversion Error on Inner Join Statement - Not Converting Anything
我已经将该网站用于研究已有多年了,但无法从我的研究中弄清楚这一点。 出现以下错误:
将varchar值'38221.0'转换为数据类型int时转换失败。
此“ 38221.0”与以下代码中的“ CP.DNCP_PATIENTID”相关:
SELECT PAT.V51_PRSNPERSONNUMBER AS PSNNMBR,
PAT.V51_PRSNFIRSTNAME AS FIRSTNAME,
PAT.V51_PRSNMIDDLENAME AS MIDDLENAME,
PAT.V51_PRSNLASTNAME AS LASTNAME,
ADDR.V8_PERSONHOMEADDRLINE1 AS ADDRESS,
ADDR.V8_PERSONHOMEADDRLINE2 AS ADDRESS2,
ADDR.V8_PERSONHOMEADDRCITY AS CITY,
ADDR.V8_PERSONHOMEADDRSTATE AS STATE,
ADDR.V8_PERSONHOMEADDRZIP AS ZIP,
PAT.V51_PRSNDOB AS DOB,
PAT.V51_PRSNSEX AS SEX,
PAT.V51_PRSNSSN AS SSN,
ADDR.V8_PERSONHOMEPHONENUMBER AS HOMEPHONE,
ADDR.V8_PERSONMOBILEPHONENUMBER AS MOBILEPHONE,
CV.V9_DNPLANSORTNAME AS INSPLAN,
CV.V9_DNCARRIERNAME AS INSCARRIER,
COORD.PCCUSERNAME AS CARECOORDINATOR
FROM I_DNCHGSPMTS CP
LEFT OUTER JOIN IPROCEDURE PR
ON (CP.DNCP_PROCEDURECODE = PR.PRPROCEDURECODE AND CP.OFFICE_ID = PR.OFFICE_ID)
LEFT OUTER JOIN I_VSTAFFCHGBILL STFBILL
ON (CP.OFFICE_ID = STFBILL.OFFICE_ID AND CP.DNCP_PRACTICEID = STFBILL.V69_STPRACTICEID AND
CP.DNCP_STAFFID_CREDITED = STFBILL.V69_STSTAFFID)
LEFT OUTER JOIN I_VPROVCHGBILL BILL
ON (STFBILL.V69_STSTAFFID = BILL.V58_PROVPROVIDERID AND STFBILL.OFFICE_ID = BILL.OFFICE_ID)
LEFT OUTER JOIN I_DNCHGCOVERAGE CHGCV
ON (CP.OFFICE_ID = CHGCV.OFFICE_ID AND CP.DNCP_CHARGESID = CHGCV.TPSCHARGESID)
LEFT OUTER JOIN I_VDNPLANCHGCV1 CV
ON (CHGCV.CHGCVR1PLANID = CV.V9_DNPLANID AND CHGCV.OFFICE_ID = CV.OFFICE_ID)
LEFT OUTER JOIN I_VDEPTCHG DEP
ON (CP.DNCP_DEPARTMENTCODE = DEP.V4_DPTDEPARTMENTCODE AND CP.OFFICE_ID = DEP.OFFICE_ID)
LEFT OUTER JOIN I_VDNADDRSPAT ADDR
ON (CP.OFFICE_ID = ADDR.OFFICE_ID AND CP.DNCP_PATIENTID = ADDR.V8_TPSPERSONID)
LEFT OUTER JOIN I_VPERSONPAT PAT
ON (CP.OFFICE_ID = PAT.OFFICE_ID AND CP.DNCP_PATIENTID = PAT.V51_PRSNPERSONID)
LEFT OUTER JOIN IACCOUNT ACC
ON (CP.OFFICE_ID = ACC.OFFICE_ID AND CP.DNCP_ACCOUNTSID = ACC.ACCACCOUNTSID)
LEFT OUTER JOIN IPAYMENT PMT
ON (CP.OFFICE_ID = PMT.OFFICE_ID AND CP.DNCP_PAYMENTSID = PMT.PMTPAYMENTSID)
LEFT OUTER JOIN I_VLUPROCCLASS CL
ON (PR.OFFICE_ID = CL.OFFICE_ID AND PR.PRCLASS = CL.V85_LUCLOOKUPCODE)
LEFT OUTER JOIN I_VSVCCNTRPROC SVC
ON (CP.OFFICE_ID = SVC.OFFICE_ID AND CP.DNCP_SERVICECENTERID = SVC.V75_SVCSERVICECENTERID)
LEFT OUTER JOIN I_DNDXPROCEVENT DX
ON (CP.OFFICE_ID = DX.OFFICE_ID AND CP.DNCP_PROCEDUREEVENTSID = DX.TPSPROCEDUREEVENTSID)
LEFT OUTER JOIN IPATIENT IPAT
ON (CP.OFFICE_ID = IPAT.OFFICE_ID AND CP.DNCP_PATIENTID = IPAT.PATDNPERSONNUMBER)
LEFT OUTER JOIN I_VPATCARECOORD COORD
ON (IPAT.OFFICE_ID = COORD.OFFICE_ID AND IPAT.PATCARECOORDINATORID = COORD.PCCMMUSERSID)
INNER JOIN (
SELECT CP.DNCP_PATIENTID AS PSNNMBR,
MAX(CP.DNCP_FROMSERVICEDATE) AS SVCDT
--MIN(CP.DNCP_AMOUNT_CHARGE) AS CHGAMT
FROM I_DNCHGSPMTS CP
LEFT OUTER JOIN IPROCEDURE PR
ON (CP.DNCP_PROCEDURECODE = PR.PRPROCEDURECODE AND CP.OFFICE_ID = PR.OFFICE_ID)
LEFT OUTER JOIN I_VSTAFFCHGBILL STFBILL
ON (CP.OFFICE_ID = STFBILL.OFFICE_ID AND CP.DNCP_PRACTICEID = STFBILL.V69_STPRACTICEID AND
CP.DNCP_STAFFID_CREDITED = STFBILL.V69_STSTAFFID)
LEFT OUTER JOIN I_VPROVCHGBILL BILL
ON (STFBILL.V69_STSTAFFID = BILL.V58_PROVPROVIDERID AND STFBILL.OFFICE_ID = BILL.OFFICE_ID)
LEFT OUTER JOIN I_DNCHGCOVERAGE CHGCV
ON (CP.OFFICE_ID = CHGCV.OFFICE_ID AND CP.DNCP_CHARGESID = CHGCV.TPSCHARGESID)
LEFT OUTER JOIN I_VDNPLANCHGCV1 CV
ON (CHGCV.CHGCVR1PLANID = CV.V9_DNPLANID AND CHGCV.OFFICE_ID = CV.OFFICE_ID)
LEFT OUTER JOIN I_VDEPTCHG DEP
ON (CP.DNCP_DEPARTMENTCODE = DEP.V4_DPTDEPARTMENTCODE AND CP.OFFICE_ID = DEP.OFFICE_ID)
LEFT OUTER JOIN I_VDNADDRSPAT ADDR
ON (CP.OFFICE_ID = ADDR.OFFICE_ID AND CP.DNCP_PATIENTID = ADDR.V8_TPSPERSONID)
LEFT OUTER JOIN I_VPERSONPAT PAT
ON (CP.OFFICE_ID = PAT.OFFICE_ID AND CP.DNCP_PATIENTID = PAT.V51_PRSNPERSONID)
LEFT OUTER JOIN IACCOUNT ACC
ON (CP.OFFICE_ID = ACC.OFFICE_ID AND CP.DNCP_ACCOUNTSID = ACC.ACCACCOUNTSID)
LEFT OUTER JOIN IPAYMENT PMT
ON (CP.OFFICE_ID = PMT.OFFICE_ID AND CP.DNCP_PAYMENTSID = PMT.PMTPAYMENTSID)
LEFT OUTER JOIN I_VLUPROCCLASS CL
ON (PR.OFFICE_ID = CL.OFFICE_ID AND PR.PRCLASS = CL.V85_LUCLOOKUPCODE)
LEFT OUTER JOIN I_VSVCCNTRPROC SVC
ON (CP.OFFICE_ID = SVC.OFFICE_ID AND CP.DNCP_SERVICECENTERID = SVC.V75_SVCSERVICECENTERID)
LEFT OUTER JOIN I_DNDXPROCEVENT DX
ON (CP.OFFICE_ID = DX.OFFICE_ID AND CP.DNCP_PROCEDUREEVENTSID = DX.TPSPROCEDUREEVENTSID)
WHERE CP.OFFICE_ID = 'EDQV'
AND CP.DNCP_ACTIVITYTYPE = 'CHG'
AND (CP.DNCP_PROCEDURECODE LIKE '99490' OR CP.DNCP_PROCEDURECODE LIKE 'CCM')
AND (DATEDIFF(DAY,CP.DNCP_POSTDATE,GETDATE())) < 180
GROUP BY CP.DNCP_PATIENTID
) AS MAXSVCDATE
ON (CP.DNCP_PATIENTID = MAXSVCDATE.PSNNMBR AND CP.DNCP_FROMSERVICEDATE = MAXSVCDATE.SVCDT) --AND CP.DNCP_AMOUNT_CHARGE = MAXSVCDATE.CHGAMT)
WHERE CP.OFFICE_ID = 'EDQV'
由于我没有进行任何转换,因此不确定为什么会出现此错误。 我在许多项目中使用了这种编码的变体,但从未收到错误。 感谢您的帮助。 谢谢!
对不起,我明白了。 我以为是在我的INNER JOIN中,但在其他联接中之一。 我正在将一个PERSONNUMBER加入一个PERSONID。 我修复了它,现在一切正常。 盯着它看太久而看不到眼前的事物的情况。 感谢您的时间。
尝试使用CONV(N,from_base,to_base)
,它可以在不同的数字基数之间转换数字。 它返回数字N的字符串表示形式,从基数from_base转换为to_base
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.