Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Entitäten des Tabellenvariablenstils in Oracle

Einige Antworten können Ihnen sagen, dass Oracle Tabellenvariablen hat, und das tut es bis zu einem gewissen Grad. Die meisten Antworten werden Ihnen jedoch sagen, dass Sie dies in Oracle überhaupt nicht tun sollten; es gibt einfach keine Notwendigkeit.

In Ihrem Fall würde ich einfach einen CTE verwenden:

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

UPDATE:Die Antwort, die ich schon seit langem versuche zu bekommen, ist in Bens Kommentar unten, den ich hier einfüge:„Es gibt keine Variable, die Sie spontan erstellen und mit anderen Tabellen in Standard-SQL @wcm verknüpfen können, ja . Es gibt eine Reihe verschiedener Arten von Objekten, die erstellt werden können, die Ihnen dies ermöglichen, aber nicht genau so, wie Sie es in T-SQL tun würden."