2017-09-22 4 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が係ENG から をengagement_type_idはreporting.vw_scale_dealに参加左eng.id = vsd.engagement_id et.id = eng.engagement_type_id にlookups.engagement_typeら に参加上のVSD はeng.id = cwd.engagement_id にengagement_contract_weekly_detailのCWD に参加したところcwd.week_num = 1 とケースet.nam ( 'Scale Terms'、 'Flat Billing')を入力してからcwd.week_num else 1 end = 1 とし、et.nameを( 'Weekly Percentage')にした場合はcwd.rate else cwd.amount end –

+0

ANDの引数はboolean型でなければなりません。数値型ではありません。 –

+0

クエリの最後の部分です。 'et.name in(Weekly Percentage')then cwd.rate else cwd.amount end'数値に評価されますが、あなたはブール値が必要です – Fabricator

関連する問題