Additionner deux enregistrement d'une meme table

Résolu
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 à 10:11
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

2 réponses

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
6 avril 2007 à 10:32
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
3
Raul duke Messages postés 70 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 17 mai 2019 2
6 avril 2007 à 21:43
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()
0
Rejoignez-nous