Bonjour,
j'ai un problème pour extraire mes données à partir de 2 tables de façon à ce que le résultat m'affiche la moyenne des montant des commandes passées par chaque client et par trimestre.
ma requête sur 1 trimestre est la suivante:
résultat :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 select s.customer_id as "id",c.name as "name",avg(s.total) as "1st" from sales_order s, customer c where s.customer_id=c.customer_id and s.order_date between '1-JAN-90' and '1-MAR-90' group by s.customer_id,c.name;
ce que je veux faire :id name 1st
---------- ------------------------- ----------
001 bidule 1540
002 machin 3080
etc..
ma requête :id name 1st 2nd 3rd
---------- ------------------------- ---------- ------ -------
001 bidule 1540 ..... .....
002 machin 3080
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 select distinct c.name as "name", (select AVG(s.total) from sales_order s where s.customer_id=c.customer_id and s.order_date in (select to_number(to_char(s.order_date, 'Q')) as "1st" from sales_order where order_date between '1-JAN-90' and '31-MAR-90'); (select AVG(s.total) from sales_order s where s.customer_id=c.customer_id and s.order_date in (select to_number(to_char(s.order_date, 'Q')) as "2nd" from sales_order where order_date between '1-APR-90' and '30-JUN-90'); (select AVG(s.total) from sales_order s where s.customer_id=c.customer_id and s.order_date in (select to_number(to_char(s.order_date, 'Q')) as "3rd" from sales_order where order_date between '1-JUL-90' and '30-SEP-90'); (select AVG(s.total) from sales_order s where s.customer_id=c.customer_id and s.order_date in (select to_number(to_char(s.order_date, 'Q')) as "4th" from sales_order where order_date between '1-OCT-90' and '31-DEC-90'); from customer c, sales_order s where c.customer_id=s.customer_id;
Ma requête ne fonctionne pas, il y a un pb sur le select je suppose .
Partager