获取关键字';附近的错误语法;作为';。将mysql查询转换为sql时
我正在将mysql转换为sql查询,为了在sql server中运行查询,我做了很多更改,但仍然在关键字“as”附近出现错误获取关键字';附近的错误语法;作为';。将mysql查询转换为sql时,sql,sql-server,tsql,join,sql-update,Sql,Sql Server,Tsql,Join,Sql Update,我正在将mysql转换为sql查询,为了在sql server中运行查询,我做了很多更改,但仍然在关键字“as”附近出现错误语法错误。,有人能帮我解释为什么会出现此错误吗?这是我的疑问 UPDATE tb_EpVisitRange as v left JOIN tb_Episode as e ON v.BranchID = e.BranchID AND v.company_id = e.CustID AND v.CMW = e.CMW SET e.EpVisit
语法错误。
,有人能帮我解释为什么会出现此错误吗?这是我的疑问
UPDATE tb_EpVisitRange as v
left JOIN tb_Episode as e
ON v.BranchID = e.BranchID
AND v.company_id = e.CustID
AND v.CMW = e.CMW
SET
e.EpVisitCount = IIF(PayerType = 'NonEp', 0, IIF(LUPA = 1, 0, v.High)),
e.VisitAlert = IIF(Status = 'Closed', 0, IIF((IIF(PayerType = 'NonEp', 0, IIF(LUPA = 1, 0, v.High))) > 0, 1, 0))
where billed_flag = '0';
SQL Server中的正确语法为:
UPDATE e
SET EpVisitCount = (CASE WHEN PayerType = 'NonEp' THEN 0
WHEN LUPA = 1 THEN 0
ELSE v.High
END),
VisitAlert = (CASE WHEN Status = 'Closed' THEN 0
WHEN PayerType = 'NonEp' THEN 0
WHEN LUPA = 1 THEN 0
WHEN v.High > 0 THEN 1
ELSE 0
END)
FROM tb_EpVisitRange v JOIN
tb_Episode e
ON v.BranchID = e.BranchID AND v.company_id = e.CustID AND v.CMW = e.CMW
WHERE billed_flag = 0;
注:
- 如果要使用数据库,请学习正确的SQL Server语法
- 使用
;它是正确的SQL,可以在所有正确的数据库中工作。如果您有多个条件,则尤其如此案例
- 如果要更新
,则需要e
或使内部联接
成为e
。更新不匹配的行没有意义左联接中的第一个表
大概是一个数字,因此不要在比较值周围使用引号billed_flag
UPDATE e
SET EpVisitCount = (CASE WHEN PayerType = 'NonEp' THEN 0
WHEN LUPA = 1 THEN 0
ELSE v.High
END),
VisitAlert = (CASE WHEN Status = 'Closed' THEN 0
WHEN PayerType = 'NonEp' THEN 0
WHEN LUPA = 1 THEN 0
WHEN v.High > 0 THEN 1
ELSE 0
END)
FROM tb_EpVisitRange v JOIN
tb_Episode e
ON v.BranchID = e.BranchID AND v.company_id = e.CustID AND v.CMW = e.CMW
WHERE billed_flag = 0;
注:
- 如果要使用数据库,请学习正确的SQL Server语法
- 使用
;它是正确的SQL,可以在所有正确的数据库中工作。如果您有多个条件,则尤其如此案例
- 如果要更新
,则需要e
或使内部联接
成为e
。更新不匹配的行没有意义左联接中的第一个表
大概是一个数字,因此不要在比较值周围使用引号billed_flag