2015-09-18 2 views
0

Я хочу создать динамический camemebrt, в котором я буду использовать код sql для получения процента. У меня есть таблица, в которой у меня есть:Dynamic Camembert

Montant | libelle | Bureau 
| 20  | A1 | B1 | 
| 30  | A2 | B2 | 
| 70  | A1 | B2 | 
| 80  | A2 | B1 | 

В моем камамбере у меня есть фильтр, из которого я буду выбирать значение столбца «Бюро»:

Так что, когда я выбираю B1 значения Я получаю camember с:
для бюро 1: 20% А1 и 80% A2

и когда я выбираю «все бюро», чтобы получить statisitc всех бюро я получаю:
для все бюро: 50% A1 и 5 0% a2.

Я использую этот запрос:

select (sum(MONTANT)/(select sum(MONTANT) from table1)) 
from table1 
where id_bureau= "the value of filtre" 
group by libelle; 

Это работа, когда я выбираю все бюро из фильтра, но когда я хочу, чтобы показать процент только один «бюро» я получил неправильные значения.

ответ

0

Вы должны просто суммировать соответствующие значения. Bureau = 'B1' равен 1, если true и 0, если false.

select libelle, sum(montant * (Bureau = 'B1'))/sum(Bureau) 
from table1 
group by libelle 

дает каждую либуру с частями.

Это то, что вы хотите?