IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MS SQL Server Discussion :

SQL 2005 ET PIVOT


Sujet :

MS SQL Server

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 31
    Points
    31
    Par défaut SQL 2005 ET PIVOT
    Bonsoir à tous,

    Je développe depuis des années sur Access. Depuis peu j'ai migré une appli access en projet ADP connecté sur SQL server 2005. C'est le paradis à coté des bases access. Le seul inconvénient que je rencontre (pour le moment) c'est comment traduire les requêtes croisées d'access vers SQL 2005 ? J'ai découvert que sur cette version il existait la notion de PIVOT, cependant j'ai l'impression que que le nombre de colonnes doit être défini. Cela me pose un problème car je souhaite mettre en en-tête de colonne les ID d'une table par exemple. Est-ce possible ? et si oui avez vous un exemple de code.

    Merci par avance

    tiferg

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Pour pouvoir utiliser l'opérateur PIVOT, vous devez avoir une fonction d'aggrégation dans votre requête.
    De plus cet opérateur n'est que purement cosmétique, il est plus performant de faire ce type de transformations dans l'applicatif.
    Un SGBDR est conçu pour stocker, modifier et restituer des données, pas pour les mettre en forme

    @++

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 31
    Points
    31
    Par défaut
    Bonjour Elsuket,

    Merci pour ta réponse. Dans le cadre d'un projet ADP sous access on a pas à priori la possibilité de présenter les données sous la forme d'un tableau croisé dynamique. C'est pour cette raison que je souhaitais utiliser la notion de pivot de sql 2005. Est-il possible de mettre en entête de colonne selon toi un nombre de champs non défini par avance du type ID ?

    Cordialmement

    tiferg

  4. #4
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Je ne connais pas ADP. Peux-tu nous dire ce que c'est ?

    Est-il possible de mettre en entête de colonne selon toi un nombre de champs non défini par avance du type ID ?
    Cela signifie que tu ne connais pas à l'avance le texte de la requête SQL, ou tout du moins les colonnes.
    Tu peux fabriquer le texte de ta requête avant de l'exécuter en stockant ce texte dans une variable de type texte et en spécifiant, pour l'exécuter, EXEC (@maCommandeSQL)
    Si tu connaissais le nombre de colonnes à l'avance tu pourrais insérer ce résultat dans une table temporaire puis réaliser le pivot sur cette table, mais en terme de performance c'est carrément médiocre.

    Est-ce que tu ne peux pas effectuer le calcul du tableau croisé dynamique après avoir exporté le résultat de ta requête dans un fichier (Excel, CSV, texte, ...) ? On peut utiliser aussi un fichier de format pour réaliser un export.

    En fait tu dois même pouvoir exporter tes données vers access par un serveur lié, et effectuer ensuite le tableau croisé dynamique.

    Quelle est selon toi la meilleure solution ?

    @++

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2008
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 62
    Points : 31
    Points
    31
    Par défaut
    Bonjour elsuket,

    Tout d'abord merci pour tes conseils.
    Un projet ADP est la version client/server d'access.
    L'inconvénient c'est qu'on ne peut pas réaliser de requêtes croisées avec cette version car les objets utilisés sont ceux d'SQL server (fonctions, procédures, tables etc...)
    Je vais suivre tes conseils concernant le passage vers une variable de type texte afin de définir mon nombre de colonnes variable.

    tiferg

Discussions similaires

  1. SQL 2005 Requete PIVOT
    Par persan dans le forum Développement
    Réponses: 1
    Dernier message: 12/10/2008, 01h14
  2. Prise en charge PIVOT sql 2005 Express
    Par cbleas dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 14/09/2007, 10h53
  3. Connexion pages ASP avec server SQL 2005
    Par charabia dans le forum ASP
    Réponses: 10
    Dernier message: 10/02/2006, 14h02
  4. [SQL 2005] Stocker des fichiers
    Par NicoNGRI dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2006, 10h05
  5. [ADO.Net][C#/SQL 2005] Comment faire INSERT avec variable ?
    Par hduchemin dans le forum Accès aux données
    Réponses: 1
    Dernier message: 25/01/2006, 17h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo