【问题标题】:SQL old outer join conversion; operator =* is not supported in SQL Server 2012SQL老外连接转换; SQL Server 2012 不支持 operator =*
【发布时间】:2017-11-08 03:08:29
【问题描述】:

请帮我将此查询转换为 SQL Server 2012。SQL Server 2012 不支持运算符 =*

select 
    Sum(ISNULL(Qty_Recd,0.00)) as Qty_Recd, a.PR_Detail_Key
from 
    PO_Dely c, PO_Tracking1 a
where 
    c.PO_Key =* a.PO_Key 
    and PR_No = '123456' 
    and a.File_Type = 72 
    and c.File_Type = 72
group by 
    a.PR_Detail_Key 
order by 
    a.PR_Detail_Key

【问题讨论】:

  • 查看已接受答案here的链接...

标签: sql sql-server sql-server-2008 sql-server-2012


【解决方案1】:

您想转向显式连接语法。试试这个:

select 
    Sum(ISNULL(Qty_Recd,0.00)) as Qty_Recd
    , a.PR_Detail_Key 
from PO_Dely as c
    right outer join PO_Tracking1 as a 
        on c.PO_Key = a.PO_Key 
where PR_No = '123456' 
    and a.File_Type = 72 
    and c.File_Type = 72 
group by a.PR_Detail_Key 
order by a.PR_Detail_Key

【讨论】:

  • 然后发布样本数据。另外,请注意我最初的方向是错误的——“=*”是一个右外连接。我已经相应地编辑了我的答案。
  • @Brian,所有WHERE 条件应移至ON
  • 感谢@Brian 和 Alex,它适用于以下更改,选择 Sum(ISNULL(Qty_Recd,0.00)) 作为 Qty_Recd ,a.PR_Detail_Key from [ePR].[dbo].PO_Dely as c Right outer加入 [ePR].[dbo].PO_Tracking1 作为 a on c.PO_Key = a.PO_Key and a.File_Type = 72 and c.File_Type = 72 其中 PR_No = 'PR-00149964' group by a.PR_Detail_Key order by a.PR_Detail_Key
  • @Alex,我总是在 WHERE 子句中放置(例如)“a.File_Type = 72”之类的条件。如果有客观原因让它成为 JOIN 的一部分,我很乐意学习。
  • @Brian,它是一个右连接,如果你把 all 条件放入WHERE 中,它就会停止作为右连接工作。不过,您应该能够在 WHERE 中保留 a.File_Type = 72。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2014-12-07
  • 2014-03-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多