Précédent   Forum des professionnels en informatique > Bases de données > MS SQL-Server > Développement
Développement Forum d'entraide sur le Transact-SQL, le CLR, les procédures stockées, les triggers, les requêtes SQL
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 27/08/2008, 10h45   #1
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Par défaut PIVOT sur des champs dynamique.

Bonjour,
Je dois effectuer un requête avec un PIVOT. Pas de problème pour la syntaxe mais le problème c'est que les champs sur laquelle je dois faire le PIVOT est dynamique. Il y a une solution qui est d'utiliser un EXECUTE en mettant la requête dans une chaine de caractère plus concaténation mais c'est pas terrible.

Dans le IN() du PIVOT il n'est pas possible de placer de variable ni de SELECT. Y a t'il une solution à ce problème ?

Merci.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2008, 17h11   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
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 959
Points : 17 793
Points : 17 793
Non pas de PIVOT dynamique. Seule possibilité c'est de faire du SQL dynamique. Reste que PIVOT est une hérésie et ne fait que pomper des ressources au server SQL pour faire de la cosmétique. Ce serait plus intelligent de faire cela directement sur le client (comme excel le fait pas exemple).

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 27/08/2008, 19h45   #3
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 986
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 986
Points : 3 568
Points : 3 568
Citation:
Envoyé par SQLpro Voir le message
Non pas de PIVOT dynamique. Seule possibilité c'est de faire du SQL dynamique. Reste que PIVOT est une hérésie et ne fait que pomper des ressources au server SQL pour faire de la cosmétique. Ce serait plus intelligent de faire cela directement sur le client (comme excel le fait pas exemple).
A +
Ben j'avoue que c'est pas une bonne logique SQL mais c'est fort mais bon, c'est pas moi qui choisie .
Bon c'est ce que je pensais il me semble qu'il soit possible de mettre des champs dynamiquement dans le IN du PIVOT.
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h11.


 
 
 
 
Partenaires

Hébergement Web