Sommige antwoorden kunnen u vertellen dat Oracle tabelvariabelen heeft, en tot op zekere hoogte ook. De meeste antwoorden zullen u echter vertellen dat u dit helemaal niet in Oracle zou moeten doen; het is gewoon niet nodig.
In jouw geval zou ik gewoon een CTE gebruiken:
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
UPDATE:Het antwoord dat ik al heel lang probeer te krijgen, staat in Ben's opmerking hieronder, die ik hier opneem:"Er is geen variabele die u direct kunt maken en kunt toevoegen aan andere tabellen in standaard SQL @wcm, ja . Er kunnen een aantal verschillende soorten objecten worden gemaakt waarmee u dit kunt doen, maar niet precies zoals u zou doen in T-SQL".