-
Grouper des données
Bonjour a tous,
Je pratique le sql depuis peu et j'ai un besoin un peu particulier.:roll:
Je m'explique, j'ai une table comme ceci
TableA
Col1 Col2
A A1
A A2
A A3
A A4
A A5
A A6
A A7
B B1
B B2
B B3
... ....
et j'aimerais arriver a ce résultat:
A
A1/A2/A3/A4/A5
A6/A7
B
B1/B2/B3/...
En gros je dois regrouper les elements de ma colonne 2 en fonction de ma colonne 1: ca je sais faire en utilisant cette fonction:
/*----------------------------*/
SET NOCOUNT ON
DECLARE
@cur_titre char(5),
@cur_row char(5)
DECLARE cur_titre CURSOR FOR
SELECT DISTINCT(col1)
from dbo.TableA
OPEN cur_titre
FETCH cur_titre INTO @cur_titre
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @cur_titre
DECLARE cur_row CURSOR FOR
SELECT col2 FROM dbo.TableA
where col1 = @cur_titre
OPEN cur_row
FETCH NEXT FROM cur_row INTO @cur_row
WHILE @@FETCH_STATUS=0
BEGIN
PRINT @cur_row
FETCH NEXT FROM cur_row INTO @cur_row
END
CLOSE cur_row
DEALLOCATE cur_row
FETCH NEXT FROM cur_titre into @cur_titre
END
CLOSE cur_titre
DEALLOCATE cur_titre
/*---------------------*/
Mais je dois aussi afficher seulement cinq enregistrement par ligne séparés par des /. Et ca malheuresement je sais pas faire...:oops:
J'espere que vous pourrez m'aider.
Merci par avance.
Nono
-
Selon moi, tu utilises le SQL à contre-emploi. Le SQL c'est très bien pour extraire des données d'une DB. Par contre la mise en forme, c'est pas sa tasse de thé. C'est plutôt du ressort du langage qui utilise le SQL. Qu'utilises-tu?
Si tu désire malgré tout rester à ce niveau, pour mySql il y a l'attribut 'LIMIT 0 5' (Syntaxe approximatif) qui ne te donnera que les 5 premiers records. Pour d'autres db, il existe également une commande pour obtenir les 5 premiers records.
-
Merci pour ta reponse.
J'utilise Transact SQL pour faire ma mise en forme de données.
Je reconnais qu'il serait plus rigoureux de faire cela avec un autre langage...:roll: