-2

我有2個表複雜的SQL連接查詢的一些條件得到列的一個

表1:

Id | product | price 
---+---------+------ 
1 | A | 5 
1 | B | 3 
1 | C | 6 

表2:

Id | prod | subprod 
---+------+-------- 
1 | A | xxxx 
1 | A | yyyy 
1 | A | zzzz 

我的結果表應具有的所有3行從表2連同一個稱爲價格的新列(將從表1計算的值)

結果表應該像

Id|prod|subprod|price 
--+----+-------+----- 
1 | A | xxxx |(if subprod = xxxx in table 2 then this should have price of A from table 1) 
1 | A | yyyy |(if subprod = yyyy in table 2, then if price of B is greater than price of C then the value should be price of B else 0) 
1 | A | zzzz |(if subprod = zzzz in table 2, then if price of B is less than price of C then the value should be price of C-B else 0) 

+0

你想要整個if語句在你的輸出中,還是你想要if語句的解決方案?你到目前爲止還嘗試過什麼?發佈您的查詢 – RealCheeseLord

+0

看起來像作業 –

+0

@RealCheeseLord我創建了一個函數,所有這些硬編碼,並在查詢 – user2954417

回答

0

試試這個:

select distinct tab_2.*,case when tab_2.subprod ='xxxx' then (select tab_1.price from tab_1 where product='A') 
when tab_2.subprod ='yyyy' then CASE WHEN (select price from tab_1 where product='B') > (select price from tab_1 where product='C') THEN (select price from tab_1 where product='B') else 0 end 
when tab_2.subprod ='zzzz' then CASE WHEN (select price from tab_1 where product='B') < (select price from tab_1 where product='C') THEN (select price from tab_1 where product='C') - (select price from tab_1 where product='B') else 0 end 
END AS price 
from tab_1,tab_2 
where tab_1.Id =tab_2.id 

輸出: -

id prod subprod  price 
1 A  xxxx  5 
1 A  yyyy  0 
1 A  zzzz  3 

編輯:

select distinct tab_2.*,case when tab_2.subprod ='xxxx' then (select tab_1.price from tab_1 where product='A') 
when tab_2.subprod ='yyyy' then CASE WHEN b.price > c.price THEN b.price else 0 end 
when tab_2.subprod ='zzzz' then CASE WHEN b.price < c.price THEN c.price - b.price else 0 end 
END AS price 
from tab_1,tab_2,(select id,price from tab_1 where product='B') b,(select id,price from tab_1 where product='C')c 
where tab_1.Id =tab_2.id 
and b.id =tab_2.id 
and c.Id =tab_2.id 
+0

這工作..有沒有一種方法,我們可以更好地使用cAse語句。 – user2954417

+0

檢查編輯後的查詢 – Anagha