Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server
MS SQL-Server Forum Microsoft SQL-Server. Avant de poster -> FAQ SQL-Server, Tutoriels SQL-Server
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/03/2011, 16h03   #1
Membre du Club
 
Inscription : mai 2008
Messages : 230
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 230
Points : 55
Points : 55
Par défaut Regroupement des champs

Bonjour,

J'aimerais faire un regroupement selon certain critères.
Voici un exemple:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
Id / Nom / Prénom / Date / Minutes / Activité / Groupe
1  - Pont - Paul - 21/01/2011 / 300 / 1 / 1
2  - Pont - Paul - 21/01/2011 / 300 / 1 / 2
3  - Pont - Paul - 21/01/2011 / 300 / 1 / 3
4  - Pont - Paul - 21/01/2011 / 300 / 1 / 4
5  - Pont - Paul - 21/01/2011 / 140 / 2 / 1
6  - Pont - Paul - 21/01/2011 / 140 / 2 / 2
7  - Pont - Paul - 21/01/2011 / 140 / 2 / 3
8  - Pont - Paul - 21/01/2011 / 140 / 2 / 4
9  - Pont - Paul - 21/01/2011 / 200 / 3 / 1
10 - Pont - Paul - 21/01/2011 / 200 / 3 / 2
11 - Pont - Paul - 21/01/2011 / 200 / 3 / 3
12 - Pont - Paul - 21/01/2011 / 200 / 3 / 4
J'aimerais donc regrouper le nombre de minutes des activité 1 et 3 pour avoir ce résultat là :

Code :
1
2
3
4
5
6
7
8
9
Id / Nom / Prénom / Date / Minutes / Activité / Groupe
1  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 1
2  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 2
3  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 3
4  - Pont - Paul - 21/01/2011 / 500 / 1et3 / 4
5  - Pont - Paul - 21/01/2011 / 140 / 2 / 1
6  - Pont - Paul - 21/01/2011 / 140 / 2 / 2
7  - Pont - Paul - 21/01/2011 / 140 / 2 / 3
8  - Pont - Paul - 21/01/2011 / 140 / 2 / 4
Cela fait des heures que je suis dessus mais je n'arrive pas à trouver de solution.

Merci infiniment pour vos idées..
Lucazzo
lucazzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h18   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Il vous faut faire une requête récursive.
Lisez ce que j'ai écrit à ce sujet : http://sqlpro.developpez.com/cours/s...te-recursives/

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h28   #3
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Code :
1
2
3
4
5
6
7
SELECT Nom , Prénom , Date , sum( Minutes) , 
	case when Activité = 1 OR Activité = 3 then '1 et 3' else cast( Activité AS varchar) end Activité_out , 
	Groupe
FROM ma_table
GROUP BY Nom , Prénom , Date , 
	case when Activité = 1 OR Activité = 3 then '1 et 3' else cast( Activité AS varchar) end , 
	Groupe
Quelque chose dans ce goût-là ?
Ton id, c'est pour l'affichage ou c'est indispensable ?
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 16h55   #4
Membre du Club
 
Inscription : mai 2008
Messages : 230
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 230
Points : 55
Points : 55
Pour reprendre la réponse de 7gyY9w1ZY6ySRgPeaefZ :

Cela me donne bien le résultat voulu, par contre, étant donné que j'ai donné un exemple avec que 3 activités, il m'a bien regroupé les activités 1 et 3 mais moi dans mes données, j'ai environ 5 activités, donc il m'a regroupé les activités 2, 4 et 5 ! Alors que j'aimerais que ces informations restent non-groupée.

Pour la réponse de SQL-Pro, la doc est excellente, mais j'ai beaucoup de peine à mettre en pratique mon cas avec votre solution de récursivité.
lucazzo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h03   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
L'exemple donné dans l'article sur le trajet est la voie à suivre :
1) on ajoute à chaque itération les minutes
2) on concatène les activités.

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/03/2011, 17h06   #6
Expert Confirmé
 
Avatar de 7gyY9w1ZY6ySRgPeaefZ
 
Homme
dba
Inscription : juillet 2007
Messages : 2 520
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Canada

Informations professionnelles :
Activité : dba

Informations forums :
Inscription : juillet 2007
Messages : 2 520
Points : 3 967
Points : 3 967
Au lieu de rester dans l'absolu, pourriez-vous vous conformer aux règles du forum avec des exemples mis en forme proprement, la ddl de vos tables ainsi que le résultat souhaité, on va gagné du temps.
J'ai testé d'après ce que vous avec fourni et je ne comprend pourquoi vos activités 4 et 5 seraient regroupés ? C'est quoi le type de données des activités ?
__________________
les règles du forum - mode d'emploi du forum
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs.
(Rappel : "ça ne marche pas" n'est pas un message d'erreur)
JE NE RÉPONDS PAS aux questions techniques par message privé.
Écrire en français sur un forum est une marque minimale de respect.
7gyY9w1ZY6ySRgPeaefZ est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h19.


 
 
 
 
Partenaires

Hébergement Web