Bonjour,

Voila je m'explique, c'est assez compliqué....

j'ai une premiere requete :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
 
SELECT     Ref, NbRef, STR(CAST(NbRef / 4640 * 100 AS decimal(10, 4)), 10, 4) + ' %' AS Poids
FROM         (SELECT DISTINCT SUBSTRING(ReferentCommande.Referent, 1, 3) AS Ref, CAST(COUNT(*) AS decimal) AS NbRef
                       FROM          ReferentCommande INNER JOIN
                                                  (SELECT     Id
                                                    FROM          Dossier
                                                    WHERE      (EtatDossier = 16 OR
                                                                           EtatDossier = 0) AND (CONVERT(datetime, Saisie, 103) BETWEEN '28/08/2006' AND '30/09/2006') AND (TDossier = 0)) 
                                              AS IdDossier ON ReferentCommande.Dossier = IdDossier.Id
                       GROUP BY SUBSTRING(ReferentCommande.Referent, 1, 3)) AS derivedtbl_1
ORDER BY NbRef DESC
qui me renvoie :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
 Pa	97	    2.0905 %
LVE	24	    0.5172 %
NEW	22	    0.4741 %
GOO	22	    0.4741 %
CLA	13	    0.2801 %
KEL	12	    0.2586 %
OVE	10	    0.2155 %
c'est a dire pour uen periode, le nombre de commande passée, avec quelle reference (3 premieres lettres) et le poids de ces commandes sur le total.



ensuite j'ai une autre requete :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT     ReferentA, ReferentB, Nbr
FROM         (SELECT     SUBSTRING(A.Referent, 1, 3) AS ReferentA, SUBSTRING(B.Referent, 1, 3) AS ReferentB, COUNT(*) AS Nbr, row_number() OVER (partition BY 
                                              substring(A.Referent, 1, 3)
                       ORDER BY COUNT(*) DESC) NbrLigne
FROM         ReferentCommande AS A INNER JOIN
                      ReferentCommande AS B ON A.Dossier = B.Dossier AND SUBSTRING(A.Referent, 1, 3) <> SUBSTRING(B.Referent, 1, 3)
WHERE     A.Dossier IN
                          (SELECT     Id
                            FROM          Dossier
                            WHERE      (EtatDossier = 16 OR
                                                   EtatDossier = 0) AND (CONVERT(datetime, Saisie, 103) BETWEEN '28/08/2006' AND '30/09/2006') AND (TDossier = 0))
GROUP BY substring(A.Referent, 1, 3), substring(B.Referent, 1, 3)) C
WHERE     NbrLigne <= 3
qui a pour resultat :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
 Pa	GOO	12
 Pa	LVE	9
 Pa	OVE	8
CEL	NEW	1
DIM	OVE	8
DIM	KEL	4
DIM	PRO	4
ESV	LOC	1
ESV	 Pa	1
GOO	 Pa	12
GOO	YAH	2
KEL	OVE	8
KEL	 Pa	7
KEL	DIM	4
LOC	 Pa	2
LOC	ESV	1
LOC	LVE	1
LVE	 Pa	9
LVE	KEL	4
LVE	OVE	4
MIV	 Pa	3
NEW	 Pa	1
NEW	CEL	1
OVE	PRO	10
OVE	 Pa	8
OVE	DIM	8
PRO	OVE	10
PRO	KEL	4
PRO	DIM	4
YAH	GOO	2

c'est a dire pour la meme periode de temps les origines de mes referents(...)


et moi j'aimerais a mixer ces deux requetes pour avoir un resultat de la sorte qui me ramene les trois premieres colonnes du tableau avec 12 colonnes supplémentaires, à savoir, par exemple pour la premiere ligne de ma premiere requete (ligne pa) j'aurai ensuite goo 12 12/97(*) 12/22(**) LVE 9 9/97(*) 9/24(**) OVE 8 8/97(*) 8/10(**)

(*) qui serait 12 divisé par 97 pour la part de goo dans la deuxieme requete correspondant a Pa dans la premiere

et

(**) qui serait 12 divisé par 22 pour cette fois la part de goo dans la deuxieme requete correspondant tjs a Pa dans le premiere mais cette fois ramené a goo dans la premiere.....


Je sais c'est assez flou et en meme temps relativement complexe!


Si un PRO du sql avait l'obligence de se pencher la dessus...

Je lui en serais extremement reconnaissant!