Oracle-11g-R2
在嵌套的 where 子句中比較兩個表中的值。
這是一個比較具體的問題。我正在努力在 Business Objects 中創建行限制,並且客戶希望記錄在另一個表的某個範圍內。問題是,您只能選擇一張桌子。我發現的一個解決方法是我可以在 WHERE 子句中選擇其他表。
例如:
a.RE_UID = b.RE_UID
我必須使用:
a.RE_UID IN (select A.RE_UID from TABLE1 A join TABLE2 B ON A.RE_UID = B.RE_UID )
我難過的地方是我需要將另一個表與 BETWEEN 進行比較。就像是:
A.CL_FROM_SVC_DTE BETWEEN B.EFF_DTE AND B.END_DTE
如果我像上面那樣嘗試,我會得到錯誤,它期望在 WHERE 之後出現另一個字元:
SELECT * FROM TABLE2 WHERE IN (select A.CL_FROM_SVC_DTE FROM TABLE1 A JOIN TABLE2 B ON A.RE_UID = B.RE_UID ) BETWEEN B.EFF_DTE AND B.END_DTE
如果您從 Table2 中選擇所有符合 Table1 條件的內容,您可以執行以下操作:
SELECT T2.* FROM TABLE2 T2 INNER JOIN TABLE1 T1 ON T2.RE_UID = T1.RE_UID WHERE T1.CL_FROM_SVC_DTE BETWEEN T2.EFF_DTE AND T2.END_DTE
我希望它有所幫助。
不確定我既不理解問題也不理解僅從一個表中選擇的限制,所以這充其量是一個有根據的猜測:
SELECT B.* FROM TABLE2 B WHERE b.RE_UID IN ( select a.RE_UID FROM TABLE1 A WHERE A.CL_FROM_SVC_DTE BETWEEN B.EFF_DTE AND B.END_DTE A.RE_UID );