2016-09-30 46 views
0

我從非DBA的角度來看待這個問題,因爲我沒有權限爲數據庫創建新表。我試圖解決此通過使用Oracle中的子查詢有點像這個須藤代碼:如何在Oracle的子查詢中定義臨時表值

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

隨着不是Temptable看起來像

Col1name | Col2name 
1   a 
2   b 

,輸出爲第1行。我知道這是不是最簡單的方法,但是我可以想到的是完成我的任務直到我可以讓管理員批准新表。我搜查了很多,但我找不到答案。有沒有簡單的方法來定義這樣的臨時表數據?

回答

1

作爲替代的CTE(公共表expresssion)由Gordon的建議,你也可以使用查詢作爲一個老派的內嵌視圖。

例如:

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

該訣竅。謝謝! – SandPiper

2

我只是這樣做的:

with temptable as (
     select 1 as col1name, 'a' col2name from dual union all 
     select 2, 'b' from dual 
    ) 
Select * 
from temptable 
where col1name = 1; 
相關問題