微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将SQL语句Oracle更改为SQL Server

如何解决将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_DTMAS 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 举报,一经查实,本站将立刻删除。