Sql server sqlserver中的Oracle连接查询
这是我需要更改为SQLServer2008的oracle查询示例。基本上,它从表2中获取scode的描述,如果没有或没有使用“case”的描述,则将其设置为“unknown”。怎么做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
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