【发布时间】:2018-02-03 02:22:35
【问题描述】:
我正在将 mysql 查询转换为 sql 查询我有以下查询,当我在 sql server 中运行此查询时,它说
Error 156: Incorrect syntax near the keyword 'as'.
谁能帮我解释一下为什么会出现这个错误?
Mysql 查询(这在 mysql 中运行良好):
UPDATE tb_Episode as e left JOIN tb_Payer as p ON (e.CustID = p.company_id) AND (e.PayorType = p.payor_type)
left JOIN tb_HHPPS as h ON e.HHPPS = h.HHPPS
SET
e.PayerType = If(p.payer_type=1,"Ep","NonEp"),
e.LUPAAlert = If((p.payer_type)<>"1",0,If(EpEnd<=Now(),0,If(TotVisits<5,1,0))),
e.LUPADays = If((If((p.payer_type)<>"1",0,If(EpEnd<=Now(),0,If(TotVisits<5,1,0))))=0,0,EpEnd-Now()),
e.FinalAlert = If((p.payer_type)<>"1",0,If(abs(DATEDIFF(Now(),EpEnd))>1,0,1)),
e.FinalDays = If((If((p.payer_type)<>"1",0,If(abs(DATEDIFF(Now(),EpEnd))>1,0,1)))=1,abs(DATEDIFF(Now(),EpEnd)),0),
e.RAPAlert = If(p.payer_type="1",If(abs(DATEDIFF(Now(),EpStart))>0,1,0),0),
e.RAPDays = If((If(p.payer_type="1",If(abs(DATEDIFF(Now(),EpStart))>0,1,0),0))=1,abs(DATEDIFF(Now(),EpStart)),0)
where e.billed_flag = "0"
SQLQuery(出现错误):
UPDATE tb_Episode as e left JOIN tb_Payer as p ON (e.CustID = p.company_id) AND (e.PayorType = p.payor_type)
left JOIN tb_HHPPS as h ON e.HHPPS = h.HHPPS
SET
e.PayerType = IIF(p.payer_type=1,'Ep','NonEp'),
e.LUPAAlert = IIF((p.payer_type)<>"1",0,IIF(EpEnd<=getdate(),0,IIF(TotVisits<5,1,0))),
e.LUPADays = IIF((IIF((p.payer_type)<>"1",0,IIF(EpEnd<=getdate(),0,IIF(TotVisits<5,1,0))))=0,0,EpEnd-getdate()),
e.FinalAlert = IIF((p.payer_type)<>"1",0,IIF(abs(DATEDIFF(millisecond,getdate(),EpEnd))>1,0,1)),
e.FinalDays = IIF((IIF((p.payer_type)<>"1",0,IIF(abs(DATEDIFF(millisecond,getdate(),EpEnd))>1,0,1)))=1,abs(DATEDIFF(millisecond,getdate(),EpEnd)),0),
e.RAPAlert = IIF(p.payer_type="1",IIF(abs(DATEDIFF(millisecond,getdate(),EpStart))>0,1,0),0),
e.RAPDays = IIF((IIF(p.payer_type="1",IIF(abs(DATEDIFF(millisecond,getdate(),EpStart))>0,1,0),0))=1,abs(DATEDIFF(millisecond,getdate(),EpStart)),0)
where e.billed_flag = '0'
【问题讨论】:
-
简化查询以查找问题。 stackoverflow.com/help/mcve
-
您的查询不是 SQL Server 语法。
-
对
(p.payer_type)<>"1"进行一点代码审查(希望能阻止我的眼睛抽搐),payer_type是数字还是字符数据类型?在后台,'1'和1之间存在差异。另外,"'. -
你检查过 MSDN 的
UPDATE和JOIN的语法吗?这可能是您在此处发布之前应该做的第一件事。显然你的语法是错误的。
标签: sql sql-server