2015-01-15 2 views
-2

У меня есть 4 столбца в таблице.Запрос Sql для базы данных Postgresql

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

Я хочу привести из базы данных в datewise где:

если B верно, то сумма 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

Что делать, если каждая строка в одну и ту же дату имеет значение differenct на 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; 
Смежные вопросы