Oracle
 sql >> Database >  >> RDS >> Oracle

Entità di stile della variabile tabella in Oracle

Alcune risposte potrebbero dirti che Oracle ha variabili di tabella e in una certa misura lo fa. Tuttavia, la maggior parte delle risposte ti dirà che non dovresti farlo affatto in Oracle; semplicemente non ce n'è bisogno.

Nel tuo caso userei semplicemente 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

AGGIORNAMENTO:la risposta che sto cercando di ottenere da molto tempo è nel commento di Ben di seguito che includo qui:"Non esiste una variabile, che puoi creare al volo e unirti ad altre tabelle in SQL standard @wcm, sì . È possibile creare diversi tipi di oggetti che ti permetteranno di farlo, ma non esattamente come faresti in T-SQL".