如何解决将SQL语句Oracle更改为SQL Server
我想知道如何将sql语句从Oracle更改为sql Server。 但是,发生错误
关键字“ AS”附近的语法无效
我不知道为什么会发生错误。
SELECT A.DMND_NO,A.DMND_R_ID,C.EMP_NO,C.USER_NM,CASE WHEN C.TYPE_CD = '01' THEN C.DEPT_CD ELSE C.vendOR_CD END AS DEPT_CD,CONVERT(VARCHAR(20),A.ATH_DMND_DTM,120) AS ATH_DMND_DTM,A.APRV_DTM,120) AS APRV_DTM,A.APVR_ID,ISNULL(D.USER_NM,A.APVR_ID) AS APRV_NM,C.TYPE_CD,I.CODE_NM AS REQ_GB
FROM TB_SY_ATHDMND A RIGHT OUTER JOIN TB_SY_USER D
ON A.APVR_ID = D.USER_ID,TB_SY_USER C RIGHT OUTER JOIN TB_SY_DEPT F
ON C.DEPT_CD = F.DEPT_CD,TB_SY_ATHDMNDDET B,(SELECT COMP_CD,CODE_CD,CODE_NM FROM TB_SY_CODE WHERE CLS_ID = 'COM_CLS_0049' AND USE_CD = 'Y') I
WHERE A.DMND_NO = B.DMND_NO
AND A.DMND_R_ID = C.USER_ID
AND A.DMND_COMP_CD = I.COMP_CD
AND C.TYPE_CD = I.CODE_CD
AND A.PRGR_STAT_CD = '03'
AND B.ATH_DVCD = 'U'
AND A.DMND_COMP_CD = #{gCOMP_CD}
<if test='SEARCHDT_FROM != null and !SEARCHDT_FROM.equals("") and SEARCHDT_TO != null and !SEARCHDT_TO.equals("")'>
AND A.APRV_DTM BETWEEN CONVERT(VARCHAR(8),112) AS ATH_DMND_DTM AND CONVERT(VARCHAR(20),120) AS APRV_DTM
</if>
<if test='TYPE_CD != null and !TYPE_CD.equals("")'>
AND C.TYPE_CD = #{TYPE_CD}
</if>
<if test='USER_NM != null and !USER_NM.equals("")'>
AND C.USER_NM = #{USER_NM}
</if>
ORDER BY A.APRV_DTM DESC,A.DMND_NO DESC
解决方法
我不确定,但是您是否尝试使用语法,例如使用一个字符空间而不是AS?
,CASE WHEN C.TYPE_CD = '01' THEN C.DEPT_CD ELSE C.VENDOR_CD END DEPT_CD,CONVERT(VARCHAR(20),A.ATH_DMND_DTM,120) ATH_DMND_DTM,A.APRV_DTM,120) APRV_DTM,A.APVR_ID,ISNULL(D.USER_NM,A.APVR_ID) APRV_NM
Oracle / PLSQL中ALIAS A TABLE的语法为:table_name alias_name
众所周知,AS是可选的。
,我认为您的代码在两个地方都有问题。
应从,
子句中删除额外的FROM
FROM TB_SY_ATHDMND A RIGHT OUTER JOIN TB_SY_USER D
ON A.APVR_ID = D.USER_ID,TB_SY_USER C RIGHT OUTER JOIN TB_SY_DEPT F --,at the start is not needed -- remove it
ON C.DEPT_CD = F.DEPT_CD,TB_SY_ATHDMNDDET B --,at the start is not needed -- remove it,(SELECT COMP_CD,CODE_CD,CODE_NM FROM TB_SY_CODE WHERE CLS_ID = 'COM_CLS_0049' AND USE_CD = 'Y') I --,at the start is not needed -- remove it
AS
不能在WHERE
子句条件中使用。
从以下代码中删除AS ATH_DMND_DTM
和AS APRV_DTM
:
<if test='SEARCHDT_FROM != null and !SEARCHDT_FROM.equals("") and SEARCHDT_TO != null and !SEARCHDT_TO.equals("")'>
AND A.APRV_DTM BETWEEN CONVERT(VARCHAR(8),112) AS ATH_DMND_DTM AND CONVERT(VARCHAR(20),120) AS APRV_DTM
</if>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。