Bonjour,
Voila je m'explique, c'est assez compliqué....
j'ai une premiere requete :
qui me renvoie :
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
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.
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 %
ensuite j'ai une autre requete :
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 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
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!
Partager