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

Messages postés
70
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
- - Dernière réponse : Raul duke
Messages postés
70
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
- 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
Statut
Modérateur
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 153 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_skweeky
Messages postés
70
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
17 mai 2019
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