首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Oracle SQL转换为TSQL

将Oracle SQL转换为TSQL
EN

Stack Overflow用户
提问于 2018-04-06 20:20:24
回答 1查看 106关注 0票数 0

我有以下Oracle SQL:

代码语言:javascript
复制
    select a.t$orno || '|' || a.t$pono || '|' || a.t$item || '|' || ltrim(rtrim(c.t$dsca)) || '|' || 
a.t$suno || '|' || ltrim(rtrim(b.t$nama)) || '|' || 
a.t$pric || '|' || (a.t$dqua - a.t$iqan) || '|2401|' || a.t$comp || '|' || e.t$cuqp || '|' || e.t$cupp || '|' || (a.t$amnt - a.t$iamt) || '|' || e.t$pacn  || '|' || e.t$dim1  || '|' ||   e.t$dim2                                                             
    || '|' || a.t$reno  || '|' || a.t$srnb
    from baan.ttdpur045310 a, baan.ttccom020310 b, baan.ttiitm001310 c, baan.ttdpur041310 e
    where a.t$srnb > 0
    and   a.t$reno != 0
    and   a.t$dqua !=0
    and   (a.t$dqua - a.t$iqan) != 0
    and   a.t$suno = b.t$suno
    and   ((a.t$suno, a.t$orno, a.t$pono, a.t$srnb) not in (select d.t$suno, d.t$orno, d.t$pono, d.t$srnb from baan.ttdpur046310 d)
    OR ((a.t$suno, a.t$orno, a.t$pono, a.t$srnb) in (select d.t$suno, d.t$orno, d.t$pono, d.t$srnb from baan.ttdpur046310 d WHERE a.t$orno = d.t$orno and a.t$pono = d.t$pono and a.t$srnb = d.t$srnb and a.t$dqua != d.t$qana)))
    and   a.t$item = c.t$item
    and   a.t$orno = e.t$orno
    and   a.t$pono = e.t$pono

下面是我尝试将其转换为用于microsoft服务器的TSQL:

代码语言:javascript
复制
        select a.t$orno,a.t$pono,a.t$item,ltrim(rtrim(c.t$dsca)),a.t$suno,ltrim(rtrim(b.t$nama)),a.t$pric,(a.t$dqua - a.t$iqan),'2401',a.t$comp,e.t$cuqp,e.t$cupp,(a.t$amnt - a.t$iamt),e.t$pacn,e.t$dim1,e.t$dim2,a.t$reno,a.t$srnb
from    dbo.ttdpur045310 as a,      dbo.ttccom020310 as b, dbo.ttiitm001310 as c, dbo.ttdpur041310 as e
where a.t$srnb > 0
and   a.t$reno != 0
and   a.t$dqua !=0
and   (a.t$dqua - a.t$iqan) != 0
and   a.t$suno = b.t$suno

and   ((a.t$suno, a.t$orno, a.t$pono, a.t$srnb) not exists (select d.t$suno, d.t$orno, d.t$pono, d.t$srnb from dbo.ttdpur046310 as d)
OR ((a.t$suno, a.t$orno, a.t$pono, a.t$srnb) exists (select d.t$suno, d.t$orno, d.t$pono, d.t$srnb from dbo.ttdpur046310 as d WHERE a.t$orno = d.t$orno and a.t$pono = d.t$pono and a.t$srnb = d.t$srnb and a.t$dqua != d.t$qana)))

and   a.t$item = c.t$item
and   a.t$orno = e.t$orno
and   a.t$pono = e.t$pono

我得到了以下错误:

Msg 4145,15级,状态1,33线 一种非布尔型的表达式,在期望条件为“,”的上下文中指定。 Msg 156,15级,状态1,第34行 关键字“OR”附近的语法不正确。 Msg 102,15级,状态1,第34线 在“)”附近不正确的语法。

EN

回答 1

Stack Overflow用户

发布于 2018-04-06 20:39:29

如果你发布了你收到的任何错误,这会有帮助的,但我认为这应该是可行的:

代码语言:javascript
复制
    SELECT        A.T$ORNO, A.T$PONO, A.T$ITEM, LTRIM(RTRIM(C.T$DSCA)) AS T$DSCA, A.T$SUNO, LTRIM(RTRIM(B.T$NAMA)) AS T$NAMA, A.T$PRIC, A.T$DQUA, A.T$IQAN, A.T$DQUA - A.T$IQAN AS Expr1, '2401' AS Expr2, 
                         A.T$COMP, E.T$CUQP, E.T$CUPP, A.T$AMNT, A.T$IAMT, A.T$AMNT - A.T$IAMT AS Expr3, E.T$PACN, E.T$DIM1, E.T$DIM2, A.T$RENO, A.T$SRNB
 FROM dbo.TTDPUR045310 AS A
INNER JOIN dbo.TTIITM001310 AS C ON A.T$ITEM = C.T$ITEM
INNER JOIN dbo.TTCCOM020310 AS B ON A.T$SUNO = B.T$SUNO
INNER JOIN dbo.TTDPUR041310 AS E ON A.T$ORNO = E.T$ORNO
  AND A.T$PONO = E.T$PONO
 LEFT JOIN dbo.TTDPUR046310 AS d ON A.T$SUNO = d.T$SUNO
  AND A.T$ORNO = d.T$ORNO
  AND A.T$PONO = d.T$PONO
  AND A.T$SRNB = d.T$SRNB
WHERE A.T$SRNB > 0
  AND A.T$RENO <> 0
  AND A.T$DQUA <> 0
  AND (A.T$DQUA - A.T$IQAN) <> 0
  AND d.T$SUNO IS NULL;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49700476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档