Oracle
 sql >> Base de données >  >> RDS >> Oracle

Entités de style de variable de table dans Oracle

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".