sql >> Base de Datos >  >> RDS >> Oracle

Entidades de estilo de variable de tabla en Oracle

Algunas respuestas pueden decirle que Oracle tiene variables de tabla, y las tiene hasta cierto punto. Sin embargo, la mayoría de las respuestas le dirán que no debería hacer esto en Oracle en absoluto; simplemente no hay necesidad.

En tu caso simplemente usaría 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

ACTUALIZACIÓN:La respuesta que he estado tratando de obtener durante mucho tiempo está en el comentario de Ben a continuación, que incluyo aquí:"No hay ninguna variable que pueda crear sobre la marcha y unirla a otras tablas en SQL estándar @wcm, sí Hay una serie de diferentes tipos de objetos que se pueden crear que le permitirán hacer esto, pero no exactamente como lo haría en T-SQL".