Créer un "ROWNUMBER" dans une requête utilisant un aggrégat

tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 13 avril 2012 à 19:10
tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 - 13 avril 2012 à 19:40
Bonjour,
Je travaille sur une table qui comprend des enregistrements à regrouper avec une rupture sur certains enregistrements. La rupture est la valeur 'Ou' dans le champ Description ex :
!Nom! Description
! A ! Valeur totale
! A ! à estimer
! B ! Valeur parcélaire
! B ! non exigée
! B ! Ou
! B ! Valeur totale
! B ! à estimer

Résultat attendu :
!Nom! Description
! A ! Valeur totale à estimer
! B ! Valeur parcélaire non exigée
! B ! Valeur totale à estimer

J'utilise un clr de concaténation.
SELECT Nom, Clr_Concat(Description) as Description
FROM [Table]
GROUP BY Nom


Je ne sais pas comment intégrer dans une requête la rupture de l'enregistrement contenant le 'Ou' ? Quelqu'un a-t-il une idée ?

Merci


Yann

1 réponse

tri_yann Messages postés 124 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 19 septembre 2013 3
13 avril 2012 à 19:40
Dans le soucis d'être plus clair. Mon problème est valable pour toute fonction d'aggrégat. Donc pour que ce soit plus facile à tester et comprendre :
CREATE TABLE #Tmp (Nom varchar(10), Somme int)
INSERT INTO #Tmp 
SELECT 'A', 1
UNION SELECT 'A', 5
UNION SELECT 'A', 4
UNION SELECT 'A', 0
UNION SELECT 'A', 1 

La valeur de rupture de l'aggrégat est 0. Le résultat que j'attend est équivalent à :
CREATE TABLE #Tmp2 (Nom varchar(10), Grp int, Somme int)
INSERT INTO #Tmp2 
SELECT 'A', 1, 1
UNION SELECT 'A', 1, 5
UNION SELECT 'A', 1, 4
UNION SELECT 'A', 2, 0
UNION SELECT 'A', 2, 1

SELECT Nom, SUM(Somme) FROM #Tmp2 group by Nom, Grp

Mais bien sûre sans la présence de la colonne Grp

Cordialement


Yann
0
Rejoignez-nous