sql >> Databáze >  >> RDS >> Oracle

Entity s proměnným stylem tabulky v Oracle

Některé odpovědi vám mohou napovědět, že Oracle má proměnné tabulky, a to do jisté míry má. Většina odpovědí vám však řekne, že byste to v Oracle neměli dělat vůbec; prostě to není potřeba.

Ve vašem případě bych jednoduše použil 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

AKTUALIZACE:Odpověď, kterou se snažím získat už dlouho, je v Benově komentáři níže, který sem uvádím:„Neexistuje žádná proměnná, kterou byste mohli vytvořit za běhu a připojit se k jiným tabulkám ve standardním SQL @wcm, ano Existuje řada různých typů objektů, které lze vytvořit a které vám to umožní, ale ne přesně tak, jak byste to udělali v T-SQL."



  1. log spouště věštce

  2. úložiště hierarchie mysql s velkými stromy

  3. Připojení Oracle k Amazon Aurora

  4. Procedura/funkce PL/SQL pro dynamické zobrazení dat z různých tabulek spolu s názvy sloupců v prvním řádku dat