2017-09-22 121 views
0

我在Postgresql中有一個像下面這樣的表。如何爲此場景編寫查詢

+_______+________+__________+________+ 
|id  |name | rate  | amount | 
+_______+________+__________+________+ 
|123 | Flat |   | 40  | 
|123 | weekly | 200  |  | 
+_______+________+__________+________+ 

我需要顯示金額時它的平面和率,當它的每週在'名稱'列。期待這樣的輸出......

+_______+________+__________+________+ 
|id  |name | rate  | amount | 
+_______+________+__________+________+ 
|123 | 40  |   | 40  | 
|123 | 200 | 200  |  | 
+_______+________+__________+________+ 

它在PostgreSQL中可行嗎?如果是的話,該怎麼做。

回答

1

使用case表達:

select id, case when name = 'Flat' then amount else rate end as name, rate, amount 
from mytable 
+0

選擇eng.id,et.name,cwd.week_num,cwd.rate,cwd.amount,et.id engagement_type_id 從參與工程 左連接reporting.vw_scale_deal VSD 上eng.id = vsd.engagement_id 上et.id = eng.engagement_type_id 加入lookups.engagement_type等 留在eng.id = cwd.engagement_id 加入engagement_contract_weekly_detail CWD 其中cwd.week_num = 1 和情況下,當et.nam e'('Scale Term','Flat Billing')然後cwd.week_num else 1 end = 1 以及在('Weekly Percentage')中的et.name的情況下,則cwd.rate else cwd.amount end –

+0

我的整個查詢看起來像這樣,它給了我錯誤:AND的參數必須是類型布爾值,而不是鍵入數字 –

+0

您的查詢的最後一部分時,et.name中的('Weekly Percentage')然後cwd.rate else cwd.amount end'評估爲數字,但你需要一個布爾值 – Fabricator