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

Langage SQL Discussion :

Transformer des lignes en colonnes et export en Excel


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Points : 34
    Points
    34
    Par défaut Transformer des lignes en colonnes et export en Excel
    Bonjour à Tous,

    Voila dans le cadre d'un projet j'ai décidé d'utiliser du SQL pour me faire gagner du temps, je suis malheureusement dans la phase ou je vais en perdre

    J'ai des données qui sont stockées dans des bases de données sous la forme suivante :

    Tagname ---------------- Timestamp ------------------- Value ----------------- Quality
    Pneu_Avant_Gauche 03/09/2018 08:08:01 10 0
    Pneu_Avant_Gauche 03/09/2018 08:08:02 10 0
    Pneu_Avant_Gauche 03/09/2018 08:08:03 10 0
    Pneu_Avant_Droit 03/09/2018 08:08:01 12 0
    Pneu_AR_Droit 03/09/2018 08:08:01 11 0
    Pneu_AR_Gauche 03/09/2018 08:08:01 10 0

    Les Tagnames peuvent changer il ne s'agit jamais des même en fonction des gens qui nous donnes les valeurs, il faut que ce soit dynamique

    Ce que je souhaiterai faire c'est mettre les données de la manière suivante :

    Timestamp ------ TagName1 ------- Tagname2 --------- Et ......

    Puis remplir chaque colonne avec les valeurs Associé

    Ma Solution:

    1. Select Distinct sur mon TAgnAme order by asc


    1. Creer Ma nouvelle table de maniere Dynamique (Mon code prend comme parametre le Nbr du select distinct


    1. C'est ici ou je n'arrive pas a comprendre, Comment je remplis mes colonnes ? Je dois utiliser un cursor ? et faire un select dans ma premiere base puise un insert ?


    Je pense m'orienter vers un cursor mais j'aimerai avoir votre avis car on parle de plusieurs milliers de ligne, et j'aimerai que cela se fasse en quelques secondes.

    Deuxieme Etape :

    Générer un fichier excel, avec cette nouvelle base de données.
    J'ai essayer d'utiliser sp_OACreate mais cela ne fonctionne pas. Ma valeur de création vaut toujours une valeur négative.

    MErci pour vos réponses

  2. #2
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 788
    Points
    30 788
    Par défaut
    Regarde du côté de la clause PIVOT (si le SGBD que tu utilises la prend en charge)
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Merci je vais regarder ca,
    Il s'agit de sql 2008 R2

  4. #4
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Il serait plus simple et sans doute plus performant d'effectuer le pivot dans Excel, ou d'utiliser un outil de reporting comme SSRS.

    En effet, ce type d'opération n'est pas le fort des SGBDR, de surcroit quand la liste des colonnes en sortie n'est pas connue à l'avance : vous allez devoir faire du SQL dynamique, bref, une belle usine à gaz juste pour une histoire de présentation des données.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Cela marche parfaitement,

    Oui je crée mes tables et ma requêtes en sql dynamique.

    Je n'ai pas bien expliqué le contexte, mais il s'agit d'un HyperHistorian : Big Data de collecte des données.

    Mes utilisateurs, ne peuvent pas se connecter en local a la machine sur mon cloud pour des raisons de sécuritées (donc pas de excel qui pointe sur la BDD).

    Du coup je leur met a disposition une page Web.

    J'ai développé un .Exe trés performant qui permet d'extraire du big Data vers le sql (Plus de 20 millions de ligne en 20 seconde).

    Les utilisateurs font leurs choix: Les données a visualiser,La date, le type de restitution ect...
    Et ils téléchargent le fichier excel contenant les données. Je suis obligé de faire le travail a la volée.

    Le seul moyen de faire comme vous dites serait de stocker les données le plus simplement possible dans excel, et de faire une macro sur ouverture du fichier excel.
    Ca peut etre une solution, si celle la est trop lente.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Mettre des lignes en colonnes après export vers Excel
    Par alex en droit dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 06/06/2010, 10h22
  2. [Datastage Server 7.5] Transformer des lignes en colonnes
    Par alpachico dans le forum DataStage
    Réponses: 1
    Dernier message: 10/07/2009, 16h25
  3. Transformer des lignes en colonnes
    Par Gomoz dans le forum Requêtes
    Réponses: 1
    Dernier message: 17/02/2009, 17h55
  4. Transformer des lignes en colonne DataStage
    Par bnet2 dans le forum DataStage
    Réponses: 4
    Dernier message: 09/12/2008, 10h07
  5. Transformer des lignes en colonnes
    Par ofinot dans le forum Requêtes et SQL.
    Réponses: 15
    Dernier message: 30/07/2008, 11h45

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