Select de champs avec des familles differentes

cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 4 août 2009 à 11:06
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 - 12 août 2009 à 14:08
Bonjour, j'ai un souci avec une requete que j'aimerais effectuer
j'ai une table produit avec prod_id et prod_famille
et une table production avec p_prod ( = prod_id foreign key) et p_date et p_qte

je voudrais pouvoir selectionner des sommes sur des periodes ( semaine)
j'ai donc créé une requete :
select cast(datepart(wk,p_date) as varchar(2))+'-'+ cast(datepart(yy,p_date) as varchar(5)) as semaine,sum(p_qte) from production group by datepart(yy,p_date),datepart(wk,p_date))
order by datepart(yy,p_date),datepart(wk,p_date)

bon ca ca me donne le cumul de tous les produits

Maintenant je voudrais pouvoir faire la distinction sur les familles
j'ai deux familles
je voudrais donc 2 colonnes ds la reponse de ma requete avec sum(qte) de la famille1 as 'q1' et sum(qte) de la famille 2 as 'q2' ( 3 avec la colonne des dates ...)

Comment faire ?

Merci

3 réponses

nivsql Messages postés 159 Date d'inscription lundi 22 juin 2009 Statut Membre Dernière intervention 14 décembre 2010 1
6 août 2009 à 17:00
D'abord tu ramene la famille pour chaque periode via une jointure

De maniere a obtenir le resultat suivant :
Semaine Famille Quantité
12-2008 Fam1 Quant1
12-2008 Fam2 Quant2

Ensuite tu utilise l'operateur PIVOT
0
bitangm Messages postés 13 Date d'inscription jeudi 20 août 2009 Statut Membre Dernière intervention 24 août 2010
11 août 2009 à 23:26
select
cast(datepart(wk,p1.p_date) as varchar(2)) +'-'+ cast(datepart(yy,p1.p_date) as varchar(5)) as semaine
, sum(p1.p_qte) As qte_total
, sum(case when p2.prod_famille = 1 then p1.p_qte else 0 end) as qte_fam_1
, sum(case when p2.prod_famille = 2 then p1.p_qte else 0 end) as qte_fam_2
from production p1 inner join produit p2 on p1.p_prod = p2.prod_id
group by datepart(yy,p1.p_date),datepart(wk,p1.p_date))
order by datepart(yy,p1.p_date),datepart(wk,p1.p_date)

BITANG Marcel Yves
bitangm@yahoo.fr
+237 75 17 16 81
+237 75 68 58 22
+237 96 04 18 51
0
cudenetf Messages postés 448 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 26 juillet 2012 2
12 août 2009 à 14:08
merci mais si j'ai un nombre "indeterminé" de familles ?
l'utilisateur peut en créer de nouvelles et j'aimerais que cela me donne toutes les familles quelque soit leur nombre.
Est ce possible ne une requete ou bien dois passer par une premiere requete pour recuperer les familles puis construire la commande ds mon programme ?
0
Rejoignez-nous