【发布时间】:2014-03-11 10:38:02
【问题描述】:
我一直在寻找一些在 Oracle 中类似于 SQL Server 中的表变量的东西。我发现有人在 SO 上问这样的问题,人们总是说“是的,Oracle 有这个”,但示例表明实体根本不像 SQL Server。有人可以告诉我如何在 Oracle 中执行以下简单的 TSQL 解决方案吗?
declare @users table (
ID int,
Name varchar(50),
Age int,
Gender char(1)
)
;with users as (
select 1001 as ID, 'Bob' as Name, 25 as Age, 'M' as Gender
union
select 1021 as ID, 'Sam' as Name, 29 as Age, 'F'
)
insert into @users (ID, Name, Age, Gender)
select * from users
declare @grades table (
UserID int,
ClassID int,
Grade int
)
;with grades as (
select 1001 as UserID , 120 as ClassID, 4 as Grade
Union
select 1001 as UserID , 220 as ClassID, 2 as Grade
Union
select 1021 as UserID , 130 as ClassID, 4 as Grade
Union
select 1021 as UserID , 230 as ClassID, 4 as Grade
Union
select 1021 as UserID , 340 as ClassID, 2 as Grade
)
insert into @grades
select * from grades
select u.ID, u.Name, GPA = AVG(cast(g.grade as decimal))
from @users u
inner join @grades g on u.ID=g.UserID
group by u.ID, u.Name
【问题讨论】: