2013-08-01 38 views
1

是否有可能創建基於對另一個表的查詢的虛擬列? - 類似下面從查詢中派生出來的Oracle 11g虛擬列

DateTable    
DateDt StatusCd   
7/31  
8/1  CURRENT 
8/2  
8/5 
8/6 
8/7 

OtherTable 
Column1 
Column2 
VIRTUALDate = Select DateDt from DateTable where DateTable.StatusCd = 'CURRENT' 

如果需要的話我可以去更深入的例子中,

回答

2

不,這是不可能的。

the documentation

AS子句中的column_expression具有以下限制:

  • 它不能按名稱引用到另一個虛擬列。

  • column_expression中引用的任何列必須在同一個表上定義。

  • 它可以引用一個確定性的用戶定義的函數,但如果是這樣,則不能使用虛擬列作爲分區鍵 列。

因此,它不能引用另一表;並且你不能有一個查看另一個表的函數,因爲這不是確定性的。

您可以使用視圖來達到您要查找的效果。

+0

在用戶定義的函數中,如果我添加一些查詢(從另一個表)並返回結果。 可行嗎? – meadlai

+0

@meadlai - 但是這個函數不是確定性的,所以沒有。 (我猜如果查詢是針對靜態表的簡單查找,那麼仍然可以通過將函數聲明爲確定性來濫用此功能,但是沒有任何內容是真正的靜態的,因此它是危險的,並且存在更好的解決方案 - 使用視圖或僅在查詢)。 –

+0

謝謝@Alex Poole我添加了額外的列來解決這個問題。 – meadlai