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

Raul duke 67 Messages postés vendredi 16 décembre 2005Date d'inscription 18 juillet 2016 Dernière intervention - 6 avril 2007 à 10:11 - Dernière réponse : Raul duke 67 Messages postés vendredi 16 décembre 2005Date d'inscription 18 juillet 2016 Dernière intervention
- 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
cs_skweeky 261 Messages postés mercredi 3 mai 2006Date d'inscription 11 janvier 2010 Dernière intervention - 6 avril 2007 à 10:32
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

Merci cs_skweeky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de cs_skweeky
Raul duke 67 Messages postés vendredi 16 décembre 2005Date d'inscription 18 juillet 2016 Dernière intervention - 6 avril 2007 à 21:43
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.