2015-03-03 100 views
0

我打算從聯合子查詢中創建一個案例,但我無法理解它。我想這樣做:聯盟子查詢有條件

select t.colA, t.colB, 
case when t1.colC = 1 and t2.colC=0 then 1 
else t.colC end colC 
from 
(
select t1.colA,t1.colB,t1.colC from table1 t1 
union all 
select t2.colA,t2.colB,t2.colC from table2 t2 
) t 

是這樣的可能嗎?或者還有其他方法嗎?我絕對需要這個聯盟和案例。

謝謝。

+0

執行和檢查出來的人 – 2015-03-03 11:13:53

+0

爲什麼不直接在內層查詢與使用情況的情況下? – 2015-03-03 11:16:06

+0

你爲什麼需要工會?它看起來更像是你需要一個內部連接。 – 2015-03-03 11:17:15

回答

0

您不能在外部SELECT中引用t1t2

0

你無法通過工會實現你的目標。 在一個聯合中,你得到的結果中的每一行t1都是一行,以及t2的每一行。

如果您需要比較t1中的一行值,同時t2值,則必須使用連接將t1行和t2行連接在一起。

然後你可以做你的比較。

我們可以幫助你,如果你在細節顯示,有什麼exacly你有作爲輸入,並希望作爲輸出

0

如果你堅持這樣做,你想,那麼你不能指代T1或T2的方式,你必須引用別名子查詢,您可以通過以下方式做到:

select t.colA, t.colB, 
case when t.colC = 1 and t.colD is null then 1 
else t.colD end colC 
from 
(
select t1.colA,t1.colB,t1.colC, null as colD from table1 t1 
union all 
select t2.colA,t2.colB, null, t2.colC from table2 t2 
) t