Certaines réponses peuvent vous dire qu'Oracle a des variables de table, et c'est le cas dans une certaine mesure. Cependant, la plupart des réponses vous diront que vous ne devriez pas du tout faire cela dans Oracle; ce n'est tout simplement pas nécessaire.
Dans votre cas, j'utiliserais simplement un CTE :
with users as (
select 1001 as ID, 'Bob' as Name, 25 as Age, 'M' as Gender from dual
union
select 1021 as ID, 'Sam' as Name, 29 as Age, 'F' from dual
)
, grades as (
select 1001 as UserID , 120 as ClassID, 4 as Grade from dual
Union
select 1001 as UserID , 220 as ClassID, 2 as Grade from dual
Union
select 1021 as UserID , 130 as ClassID, 4 as Grade from dual
Union
select 1021 as UserID , 230 as ClassID, 4 as Grade from dual
Union
select 1021 as UserID , 340 as ClassID, 2 as Grade from dual
)
select u.ID, u.Name, AVG(g.grade) as gpa
from users u
join grades g on u.ID = g.UserID
group by u.ID, u.Name
MISE À JOUR :La réponse que j'essaie d'obtenir depuis longtemps se trouve dans le commentaire de Ben ci-dessous que j'inclus ici :"Il n'y a pas de variable que vous pouvez créer à la volée et joindre à d'autres tables en SQL standard @wcm, oui . Il existe un certain nombre de types d'objets différents qui peuvent être créés pour vous permettre de le faire, mais pas exactement comme vous le feriez dans T-SQL".