Additionner deux enregistrement d'une meme table [Résolu]

Messages postés
67
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
18 juillet 2016
- - Dernière réponse : Raul duke
Messages postés
67
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
18 juillet 2016
- 6 avril 2007 à 21:43
bonjour,

voila, je dispose d'une table contenat des enregistrement du type (Date/famille/ssFamille/compteur1/compteur2).

ex.:
ID    -DATE          -FAMILLE   -SSFAMILLE   -Cpt1   -Cpt2
 1     06/04/2007    Fam1               SSfam1            12         24
 2     05/04/2007    Fam1               SSfam1            28        20
 3     06/04/2007    Fam1               SSfam2             7         20
 4     05/04/2007    Fam1               SSfam2            81         8

j'aimerais savoir s'il est possible de creer une requete permettant ; s'il existe plusieurs enregistrement ayant des couples ( FAM/SSFam) similaires mais ayant des dates différentes;  d'additionner leurs compte vers la date la plus recente afin d'obtenir par exemple :

ID    -DATE          -FAMILLE   -SSFAMILLE   -Cpt1   -Cpt2

 1     06/04/2007    Fam1               SSfam1            40         44

 3     06/04/2007    Fam1               SSfam2            88        28
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
261
Date d'inscription
mercredi 3 mai 2006
Dernière intervention
11 janvier 2010
1
3
Merci
Bonjour,

Quelque chose de ce genre devrait faire l'affaire :

SELECT SUM(x), SUM(y), z, MAX(w)
GROUP BY z

Je regroupe tous les z communs, et fait pour chaque double (ou plus) de z la somme de x et y et je prends la valeur max de la plage pour w.

Cordialement
------------
Christian Robert - Winwise
http://blogs.developpeur.org/christian
MVP SQL Server

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 118 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_skweeky
Messages postés
67
Date d'inscription
vendredi 16 décembre 2005
Dernière intervention
18 juillet 2016
2
0
Merci
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO


CREATE  PROCEDURE sp_SGMChangeJour AS


BEGIN


BEGIN TRANSACTION transac1


-- copie des enregistrement d'hier
-- passage de la date des copies a NuLL
-- regroupement des comptes
insert into T_FAM(FAM, SSFAM, Date, cpt1, cpt2)
select T_FAM, FAM, SSFAM, null, sum(cpt1) as CPT1, sum(cpt2) as CPT2
from T_FAM
where Date <= dateadd(day,-1, getdate())
group by  FAM, SSFAM


-- On dispose desormais des enregistrements en double
-- on efface alors les enregistrements disposant d'une date
DELETE FROM T_FAM
where T_FAM_ID in(select T_FAM_ID from T_FAM
where Date <= dateadd(day,-1, getdate()))


-- ilk nous reste a ce moment que les enregistrements a date = null ayant le compte a jour
-- et ceux d'auj'
-- maj de date nulle a hier
UPDATE T_FAM set Date = dateadd(day,-1, getdate())
where Date is null


IF @@error <> 0
 ROLLBACK TRANSACTION transac1
ELSE
 COMMIT TRANSACTION transac1


END




GO
SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO


-- appel de la procédure ds vb.net
-- maCommande.CommandType = CommandType.StoredProcedure
-- maCommande.CommandText = "sp_SGMChangeJour"
-- maCommande.Connection = maConnection
-- maCommande.ExecuteNonQuery()
Commenter la réponse de Raul duke

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.