Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Entidades de estilo de variável de tabela no Oracle


Algumas respostas podem lhe dizer que o Oracle tem variáveis ​​de tabela, e tem até certo ponto. No entanto, a maioria das respostas dirá que você não deve fazer isso no Oracle; simplesmente não há necessidade.

No seu caso, eu simplesmente usaria um 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

ATUALIZAÇÃO:A resposta que estou tentando obter há muito tempo está no comentário de Ben abaixo, que incluo aqui:"Não há variável, que você pode criar na hora e juntar a outras tabelas no SQL padrão @wcm, sim Há vários tipos diferentes de objetos que podem ser criados para permitir que você faça isso, mas não exatamente como faria no T-SQL".