Mois en titre de colonne

Mois en titre de colonne - SQL/NoSQL - Programmation

Marsh Posté le 17-04-2007 à 14:42:07    

bonjour,
 
je travaille sur sql server 2000 et j'ai le genre de données suivantes:  
 
piece | mois | qte
-----------------
a      | 1      | 5
a      | 3      | 21
b      | 1      | 34
b      | 6      | 3
c      | 2      | 8
c      | 7      | 12
 
en fait je souhaiterai avoir ca, les mois en tant que titres et les quantité en lignes:
 
piece | 1 | 2 | 3 | 4 | 5 | 6 | 7 ...
------------------------------
a      | 5 |    |21|...
b      |34|     |   |   |    | 3 |...
c      |   | 8  |   |   |     |    | 12
 
j'espere que c'est clair (meme si c'est moche :D)
 
Merci.

Reply

Marsh Posté le 17-04-2007 à 14:42:07   

Reply

Marsh Posté le 17-04-2007 à 14:45:15    

directement avec sql server, t'as pas de moyen simple.
 
12 jointures (une par mois), ou alors une PS, une table temporaire...
 
sinon, traîtement au niveau de ton code, c'est ce qu'il y a de plus simple

Reply

Marsh Posté le 17-04-2007 à 15:08:30    

Salut,
 
j'ai fait avec des jointures  mais il me semblait avoir vu une astuce en t-sql.
 
Merci

Reply

Marsh Posté le 17-04-2007 à 16:36:22    

Selon les SGBD (avec MySQL par exemple) il existe effectivement des fonctions scalaires.
Mais aucune n'existe à ma connaissance sous SQL Server 2000.
Sous SQL Server 2005 par contre, je crois qu'il y en a un certain nombre.
 
Ceci dit, je ne trouve pas très propre de les utiliser, car on ne maîtrise pas du tout la structure du jeu de résultat, ce qui en soit peut rapidement poser de gros problèmes : une jointure mal placée, et tu te retrouve avec 600 000 colonnes, ce qui fera exploser à coup sûr la couche OLE DB, et peut-être même le SGBD lui-même.
=> Un SGBD n'est pas du tout prévu pour paginer des données en colonnes, uniquement en lignes.


Message édité par MagicBuzz le 17-04-2007 à 16:37:30
Reply

Marsh Posté le 17-04-2007 à 16:56:14    

Salut,
 
finalement j'ai enlevé ces méchantes jointures et ai structuré au niveau du code, simple, clair et éfficace :jap:
 
Merci!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed