Sql server sqlserver中的Oracle连接查询

Sql server sqlserver中的Oracle连接查询,sql-server,sql-server-2008,Sql Server,Sql Server 2008,这是我需要更改为SQLServer2008的oracle查询示例。基本上,它从表2中获取scode的描述,如果没有或没有使用“case”的描述,则将其设置为“unknown”。怎么做 select a.scode,b.description,a.amt,a.purid from (select scode,ISNULL(SUM(AMOUNT),0) AS AMT,count(pur_ID) from table1 where s

这是我需要更改为SQLServer2008的oracle查询示例。基本上,它从表2中获取scode的描述,如果没有或没有使用“case”的描述,则将其设置为“unknown”。怎么做

      select a.scode,b.description,a.amt,a.purid 
       from
      (select scode,ISNULL(SUM(AMOUNT),0) AS AMT,count(pur_ID)
       from table1
       where scode is not null 
       group by scode)A, table2 B  WHERE  A.SOURCE_CODE =+B.SOURCE

请注意,我将加入=:

根据评论编辑:


啊。。。这在甲骨文中也很糟糕。Oracle仍然允许使用较旧的=+join语法,但这并不意味着它是推荐的或良好的做法。在Oracle中编写此查询的最佳实践方法也可以在Sql Server中使用,无需修改。使用左连接,但给出的行数多于表中的行数。这一方法非常有效,但表2中有多个描述,只需要第一个描述。表2中的源是否有重复数据?应该可以,但请注意,我使用的是MAXSCRIPTION消除表2中的重复项似乎可行,但purid和amt被添加为源代码的准确次数的倍。
Select A.Scode, A.Amt, A.Counts, IsNull(B.Description, 'Unknown') Descripton
From (
      select Scode, SOURCE_CODE, Isnull(sum(amount),0) as Amt, count(pur_ID) Counts
      from table1 
      where scode is not null 
      group by scode, SOURCE_CODE
    ) A left join  table2 B on A.SOURCE_CODE = B.SOURCE
Select A.Scode, Isnull(sum(A.amount),0) as Amt, 
      count(A.pur_ID) Counts, IsNull(Max(B.description), 'Unknown') description
From Table1 A Left Join Table2 B
        On A.SOURCE_CODE = B.SOURCE
Where A.Scode is not null 
Group by A.Scode