2015-01-15 43 views
-2

我有一個表中的4列。SQL查詢Postgresql數據庫

A <date> 
B <boolean> 
C <boolean> 
D <numeric> 

我想在datewise從數據庫的結果,其中:

當B爲true,則總和d爲這一天的
如果C真的再總結d的

A   B C D 
11/1/2014 T  50 
11/1/2014 T  40 
11/1/2014  T 20 
12/1/2014 T  60 
12/1/2014 T  70 
13/1/2014  T 55 
13/1/2014  T 20 
14/1/2014  T 10 
14/1/2014 T  18 

所需的結果

A   E F 
11/1/2014 90 20 
12/1/2014 130 0 
13/1/2014  75 
14/1/2014 18 10 
+1

你能至少表明你迄今爲止嘗試什麼? – chridam

+0

請使用術語列而不是字段。 – jarlh

+0

如果同一天的每一行在B和C上有不同的值,該怎麼辦? – Adassko

回答

2
select a, 
     sum(case when b then d end) as e, 
     sum(case when c then d end) as f 
group by a; 

如果您使用的是Postgres 9.4,你可以通過使用使這個更具可讀性有點過濾聚集

select a, 
     sum(d) filter (b) as e, 
     sum(d) filter (c) as f 
group by a;