美好的一天
一直试图在互联网上寻找答案,但不得不提出问题,因为它似乎不是一个标准的数据类型问题。
我收到错误: 错误:使用equals(=)的表达式具有不同数据类型的组件。
这是剧本:
Create Table Work.Gross_Premiums_&Report_Date as
Select Distinct AIC.POLICY_NUMBER,
IFC(AIC.SOURCE_DATA in ('ID','PL','FSP'),(Substr(AIC.FORMATTED_ACCOUNT_NUMBER,3,13)||"*"||Substr(AIC.FORMATTED_ACCOUNT_NUMBER,14,3)),FORMATTED_ACCOUNT_NUMBER) as FORMATTED_POLICY_NUMBER,
AIC.SOURCE_DATA,
SUM(ID.Prem) AS ID_GROSS_PREMIUM,
SUM(AFS.GROSS_PREMIUM) AS AFS_GROSS_PREMIUM,
SUM(PL.PremInclVat) as PL_GROSS_PREMIUM,
SUM(FSP.Premium_charged) as FSP_GROSS_PREMIUM,
SUM(IJ.GROSS_PREMIUM) AS IJ_GROSS_PREMIUM,
SUM(SUM(ID.Prem),SUM(AFS.GROSS_PREMIUM),SUM(PL.PremInclVat),SUM(FSP.Premium_charged),SUM(IJ.GROSS_PREMIUM)) as WIMI_INCOME
From WORK.AIC_&Report_Date AIC
Left Join IDIRECT.TRNWRITTEN ID On (AIC.POLICY_NUMBER = (ID.ClientID || ID.FileNo))
Left Join WORK.AFS_&Report_Date AFS On (AIC.FORMATTED_ACCOUNT_NUMBER = AFS.ACCOUNT_NUMBER)
Left Join PL.TRNWRITTENPREM PL On (AIC.POLICY_NUMBER = Put(PL.ClientID,z8.)||Put(PL.FileNo,z3.))
Left Join FSP.POLICY_TRANSACTIONS FSP On (AIC.FORMATTED_ACCOUNT_NUMBER = Put(FSP.POLICY_NUMBER,z16.) )
Left Join WORK.INSUREJ IJ on (AIC.POLICY_NUMBER = IJ.POLICY_NUMBER)
Where (AIC.SOURCE_DATA = 'FSP'
and InPut(Put(Input('Transaction date'n,ANYDTDTM19.),DATETIME21.2),Date9.) Between INTNX('MONTH',"&Report_Date."d,0,'BEGIN')
and "&Report_Date."d and 'Paid / unpaid'n = 1)
OR AIC.SOURCE_DATA <> 'FSP'
Group By AIC.POLICY_NUMBER, AIC.SOURCE_DATA, (CALCULATED FORMATTED_POLICY_NUMBER);
如果有人能帮助确定问题,我们将不胜感激。
祝你好运, 尤金
答案 0 :(得分:0)
这意味着您要比较数值和字符值。最有可能的罪魁祸首是(AIC.POLICY_NUMBER = IJ.POLICY_NUMBER)
或(AIC.POLICY_NUMBER = (ID.ClientID || ID.FileNo))
。
在第一个示例中,检查两个policy_number变量以确保它们是相同的数据类型。
对于第二个示例,如果AIC.POLICY_NUMBER
是数字,那么当您与字符值进行比较时,您将收到错误消息
答案 1 :(得分:0)
您的代码的这一部分也存在问题:
InPut(Put(Input('Transaction date'n,ANYDTDTM19.),DATETIME21.2),Date9.)
我希望看到DATEPART()
或DTDATE9.
用于将变量转换为日期时间。如果不提前确切知道它的样子,这是一个猜测,但我认为这是你的问题:
datepart(input('Transaction date'n, ANYDTDTM19.)) between ...