2016-09-30 2 views
0

Ich nähere mich diesem Problem aus einer Nicht-DBA-Perspektive, da ich keine Berechtigungen zum Erstellen neuer Tabellen für die Datenbank habe. Ich versuche, durch die Verwendung einer Unterabfrage in Oracle eine Art, wie dieser sudo Code, dies zu umgehen:So definieren Sie temporäre Tabellenwerte in einer Unterabfrage in Oracle

With temptable as ('col1name', 'col2name', 1,'a',2,'b') 
Select * from temptable where col1name = 1 

Mit dem temptable sieht aus wie

Col1name | Col2name 
1   a 
2   b 

Und der Ausgang ist Zeile 1. Ich weiß, es ist nicht der einfachste Weg, es zu tun, aber es ist alles, was ich mir vorstellen kann, um meine Aufgabe zu erfüllen, bis ich den Admin bekommen kann, um eine neue Tabelle zu genehmigen. Ich habe viel gesucht, aber ich kann keine Antwort finden. Gibt es eine einfache Möglichkeit, temporäre Tabellendaten wie diese zu definieren?

Antwort

1

Als Alternative zu einem CTE (Common Tabelle express), wie von Gordon vorgeschlagen, Sie können auch eine Abfrage als Oldschool-Inline-View verwenden.

Zum Beispiel:

SELECT tt.col1name 
     , tt.col2name 
    FROM (SELECT 1 AS col1name, 'a' AS col2name FROM DUAL 
      UNION ALL SELECT 2, 'b' FROM DUAL 
      UNION ALL SELECT 3, 'c' FROM DUAL 
     ) tt 
    WHERE tt.col1name = 1 
    ORDER 
    BY tt.col1name 
+0

, die den Trick tat. Vielen Dank! – SandPiper

2

würde ich nur tun dies als:

with temptable as (
     select 1 as col1name, 'a' col2name from dual union all 
     select 2, 'b' from dual 
    ) 
Select * 
from temptable 
where col1name = 1; 
Verwandte Themen