Beberapa jawaban mungkin memberi tahu Anda bahwa Oracle memiliki variabel tabel, dan memang demikian sampai batas tertentu. Namun, sebagian besar jawaban akan memberi tahu Anda bahwa Anda tidak boleh melakukan ini di Oracle sama sekali; tidak perlu.
Dalam kasus Anda, saya hanya akan menggunakan 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
PEMBARUAN:Jawaban yang sudah lama saya coba dapatkan ada di komentar Ben di bawah yang saya sertakan di sini:"Tidak ada variabel, yang dapat Anda buat dengan cepat dan bergabung ke tabel lain dalam standar SQL @wcm, ya . Ada sejumlah jenis objek berbeda yang dapat dibuat yang memungkinkan Anda melakukan ini, tetapi tidak persis seperti yang Anda lakukan di T-SQL".