Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Moreau
Une requete du genre:
SELECT T1.CodeClient, T1.Annee, T1.Nb, T1.Total, T2.Nb, T2.Toal, T1.Total/T2.Total AS Part FROM ( SELECT CodeClient, Year(DateFacture) AS Annee, COUNT(MontantFactrure) AS Nb, SUM(MontantFactrure) AS Total FROM LaTable GROUP BY CodeClient, Year(DateFacture) ) T1 INNER JOIN ( SELECT Year(DateFacture) AS Annee, COUNT(MontantFactrure) AS Nb, SUM(MontantFactrure) AS Total FROM LaTable GROUP BY CodeClient, Year(DateFacture) ) T2 ON T1.Annee=T2.Annee
je l'ai pas testée...
Laurent.
"Manulk" wrote in message news:
Bonjour,
Mon problème :
A partir d'une table :
CodeClient (ex: toto, tata, etc...) DateFacture (différentes dates sur plusieurs années) MontantFacture (numérique standard)
Obtenir :
Code Année Total client Total global Part% toto 2004 2 680,00 4 180,00 64,11 toto 2003 1 372,00 1 372,00 100,00 tata 2004 1 500,00 4 180,00 35,89
Actuellement j'obtiens ça avec 3 requêtes, la dernière étant basée sur les 2 précédentes.
Je voudrais savoir s'il est possible (grâce à une requête savante) d'obtenir ça en une seule ou deux requêtes.
A+
Une requete du genre:
SELECT T1.CodeClient, T1.Annee, T1.Nb, T1.Total, T2.Nb, T2.Toal,
T1.Total/T2.Total AS Part
FROM
(
SELECT CodeClient, Year(DateFacture) AS Annee, COUNT(MontantFactrure) AS Nb,
SUM(MontantFactrure) AS Total
FROM LaTable
GROUP BY CodeClient, Year(DateFacture)
) T1
INNER JOIN
(
SELECT Year(DateFacture) AS Annee, COUNT(MontantFactrure) AS Nb,
SUM(MontantFactrure) AS Total
FROM LaTable
GROUP BY CodeClient, Year(DateFacture)
) T2
ON T1.Annee=T2.Annee
je l'ai pas testée...
Laurent.
"Manulk" <manulk@ifrance.com> wrote in message
news:5a8c2831.0407130222.69883501@posting.google.com...
Bonjour,
Mon problème :
A partir d'une table :
CodeClient (ex: toto, tata, etc...)
DateFacture (différentes dates sur plusieurs années)
MontantFacture (numérique standard)
Obtenir :
Code Année Total client Total global Part%
toto 2004 2 680,00 4 180,00 64,11
toto 2003 1 372,00 1 372,00 100,00
tata 2004 1 500,00 4 180,00 35,89
Actuellement j'obtiens ça avec 3 requêtes, la dernière étant basée sur
les 2 précédentes.
Je voudrais savoir s'il est possible (grâce à une requête savante)
d'obtenir ça en une seule ou deux requêtes.
SELECT T1.CodeClient, T1.Annee, T1.Nb, T1.Total, T2.Nb, T2.Toal, T1.Total/T2.Total AS Part FROM ( SELECT CodeClient, Year(DateFacture) AS Annee, COUNT(MontantFactrure) AS Nb, SUM(MontantFactrure) AS Total FROM LaTable GROUP BY CodeClient, Year(DateFacture) ) T1 INNER JOIN ( SELECT Year(DateFacture) AS Annee, COUNT(MontantFactrure) AS Nb, SUM(MontantFactrure) AS Total FROM LaTable GROUP BY CodeClient, Year(DateFacture) ) T2 ON T1.Annee=T2.Annee
je l'ai pas testée...
Laurent.
"Manulk" wrote in message news:
Bonjour,
Mon problème :
A partir d'une table :
CodeClient (ex: toto, tata, etc...) DateFacture (différentes dates sur plusieurs années) MontantFacture (numérique standard)
Obtenir :
Code Année Total client Total global Part% toto 2004 2 680,00 4 180,00 64,11 toto 2003 1 372,00 1 372,00 100,00 tata 2004 1 500,00 4 180,00 35,89
Actuellement j'obtiens ça avec 3 requêtes, la dernière étant basée sur les 2 précédentes.
Je voudrais savoir s'il est possible (grâce à une requête savante) d'obtenir ça en une seule ou deux requêtes.
A+
Lac
salut, tu peux essayer ca...
select substring([Date],1,4) d,sum([Montant]) as Total_client , (select sum([Montant]) from [Table] b where substring(b.[Date],1,4) substring(a.[Date],1,4) ) as Total_année , case sum([Montant]) when 0 then 0 else sum([Montant]) / (select sum([Montant]) from [Table] b where substring(b.[Date],1,4) = substring(a.[Date],1,4) ) * 100 end as '%' ,[Client] from [Table] a group by [Client], substring([Date],1,4) order by d,[Client]
"Manulk" a écrit dans le message de news:
Bonjour,
Mon problème :
A partir d'une table :
CodeClient (ex: toto, tata, etc...) DateFacture (différentes dates sur plusieurs années) MontantFacture (numérique standard)
Obtenir :
Code Année Total client Total global Part% toto 2004 2 680,00 4 180,00 64,11 toto 2003 1 372,00 1 372,00 100,00 tata 2004 1 500,00 4 180,00 35,89
Actuellement j'obtiens ça avec 3 requêtes, la dernière étant basée sur les 2 précédentes.
Je voudrais savoir s'il est possible (grâce à une requête savante) d'obtenir ça en une seule ou deux requêtes.
A+
salut,
tu peux essayer ca...
select substring([Date],1,4) d,sum([Montant]) as Total_client ,
(select sum([Montant]) from [Table] b where substring(b.[Date],1,4) substring(a.[Date],1,4) ) as Total_année
, case sum([Montant]) when 0 then 0 else
sum([Montant]) / (select sum([Montant]) from [Table] b where
substring(b.[Date],1,4) = substring(a.[Date],1,4) ) * 100 end
as '%'
,[Client]
from [Table] a
group by [Client], substring([Date],1,4)
order by d,[Client]
"Manulk" <manulk@ifrance.com> a écrit dans le message de
news:5a8c2831.0407130222.69883501@posting.google.com...
Bonjour,
Mon problème :
A partir d'une table :
CodeClient (ex: toto, tata, etc...)
DateFacture (différentes dates sur plusieurs années)
MontantFacture (numérique standard)
Obtenir :
Code Année Total client Total global Part%
toto 2004 2 680,00 4 180,00 64,11
toto 2003 1 372,00 1 372,00 100,00
tata 2004 1 500,00 4 180,00 35,89
Actuellement j'obtiens ça avec 3 requêtes, la dernière étant basée sur
les 2 précédentes.
Je voudrais savoir s'il est possible (grâce à une requête savante)
d'obtenir ça en une seule ou deux requêtes.
select substring([Date],1,4) d,sum([Montant]) as Total_client , (select sum([Montant]) from [Table] b where substring(b.[Date],1,4) substring(a.[Date],1,4) ) as Total_année , case sum([Montant]) when 0 then 0 else sum([Montant]) / (select sum([Montant]) from [Table] b where substring(b.[Date],1,4) = substring(a.[Date],1,4) ) * 100 end as '%' ,[Client] from [Table] a group by [Client], substring([Date],1,4) order by d,[Client]
"Manulk" a écrit dans le message de news:
Bonjour,
Mon problème :
A partir d'une table :
CodeClient (ex: toto, tata, etc...) DateFacture (différentes dates sur plusieurs années) MontantFacture (numérique standard)
Obtenir :
Code Année Total client Total global Part% toto 2004 2 680,00 4 180,00 64,11 toto 2003 1 372,00 1 372,00 100,00 tata 2004 1 500,00 4 180,00 35,89
Actuellement j'obtiens ça avec 3 requêtes, la dernière étant basée sur les 2 précédentes.
Je voudrais savoir s'il est possible (grâce à une requête savante) d'obtenir ça en une seule ou deux requêtes.