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

Développement SQL Server Discussion :

PIVOT d'un tableau grâce aux coordonnées des entrées


Sujet :

Développement SQL Server

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut PIVOT d'un tableau grâce aux coordonnées des entrées
    * Bonjour, *

    J'ai des données d'achat par client et par date que j'ai réussi à présenter de la manière suivante (données en anglais):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
        ID    Date    Record   ColNumber   RowNumber
        ----------------------------------------------------------------
    Le ColNumber correspond aux différentes colonnes du formulaires d'historiques d'achat (Description, BarCode, Amount, etc...) ainsi pour "Cookie1" ColNumber = 1 parce que la première colonne du formulaire c'est "Description" et Cookie 1 est la description du produit. Le RowNumber c'est le nombre de produits sur le même formulaire, donc pour le même client et la même date. Pour "Banana1", c'est row 2 car le client avec l'ID 1 a acheté en premier un "Cookie1" puis un "Banana1" à la même date.

    (Exemple: Premières colonnes du formulaire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                                   FORMULAR
                                 ___________
     
        Description   BarCode   Amount   RetailPrice  Others
        -----------------------------------------------------
    Ainsi la description du 4ème produit acheté le même jour par la meme client se présente dans mon tableau comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
        ID    Date    Record   ColNumber   RowNumber
        ----------------------------------------------------------------
     
        ID    Date  Description    1            4
    "Record" contient comme valeur toutes les colonnes du formulaires (Description, BarCode, Amount, Retail Price, etc..)

    Le but est donc d'avoir un tableau ressemblant à ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
        ID    Date    Description    BarCode    Amount    Retail
        ------------------------------------------------------------------------
    J'ai l'impression que je dois utiliser un mix de PIVOT et de JOIN, mais mes essai m'ont juste ramené à ma table initiale.


    Voici un sample fictif de ma table pour vous donner une idée de la disposition des données
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
        IF OBJECT_ID ('tempdb..#temptab') IS NOT NULL
        DROP TABLE #temptab
     
        CREATE TABLE #temptab (
        ID INT NOT NULL,
        SellDate date NOT NULL,
        Record nvarchar(255),
        ColNumber int, 
        RowNumber int)
     
        INSERT INTO #temptab (ID, SellDate, Record, ColNumber, RowNumber) VALUES
        (1, '2017-01-01', 'Cookie1', 1, 1),
        (1, '2017-01-01', '21312332', 1, 2),
        (1, '2017-01-01', '3', 1, 2),
        (1, '2017-01-01', 'Banana1', 2, 1),
        (2, '2017-01-01', 'Apple1', 1, 1),
        (3, '2017-01-01', 'Peach1', 1, 1),
        (3, '2017-01-01', '546462', 1, 2);
    Ce qui donne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
        ID    SellDate    Record    ColNumber        RowNumber
        1    2017-01-01    Cookie1       1                1
        1    2017-01-01    CH212332   2                1
        1    2017-01-01    3       3                1
        1    2017-01-01    Banana1       1                2
        2    2017-01-01    Apple1       1                1
        3    2017-01-01    Peach1       1                1
        3    2017-01-01    546462       2                1
    In the end I would like a table which look like that

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        ID    SellDate    Description    BarCode    Amount            
        1    2017-01-01     Cookie1    CH212332     3      
        1    2017-01-01      Banana1         
        2    2017-01-01        Apple1           
        3    2017-01-01        Peach1        546462
    (Les données manquantes ici sont dues en grande majorité au fait que je n'ai pas rentré l'entier de mes informations, mais si celle-ci n'existe pas, alors on remplit la case avec un NULL)

    * Merci *

  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 803
    Points
    30 803
    Par défaut
    Qu'as-tu déjà testé comme requête(s) ?
    Où rencontres-tu un problème ?
    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 Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par al1_24 Voir le message
    Qu'as-tu déjà testé comme requête(s) ?
    Où rencontres-tu un problème ?
    Avec mes données du départ, j'ai trouvé une manière via plus UNION ALL d'arriver à ce que je veux.

    Mais mon responsable m'a donné la manière pour arriver à ma table de départ que j'ai décrit au début de mon post et le "défi didactique" et d'utiliser le fait de savoir qu'une information est dans telle colonne et telle rangée pour un client et une date donnée.

    Ainsi pour le moment je n'ai uniquement essayé un pivot mais qui m'a ramené à la disposition originelle de mes données provenant d'un formulaire différent pour les achats d'un client donné à une date donnée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      ID    Date    Description1   Description2   ...   Description30   BarCode1    BarCode2    ...    BarCode30    etc...

    Ainsi pour le premier produit acheté par le client X à une date donnée, la description de celui-ci se trouve sous "Description1", son code-barre sous "BarCode1", etc..
    Dans la même logique, le deuxième produit acheté par le client X à la même date aura sa description sous "Description2", son code-barre sous "BarCode2"

    Donc je ne comprends pas vraiment comment utiliser les informations que j'ai concernant le numéro de colonne et de rangée que j'ai à ma disposition pour obtenir la table finale que j'ai citée plus haut.

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/08/2012, 17h10
  2. [Article] Des menus déroulants grâce aux CSS
    Par Bovino dans le forum Publications (X)HTML et CSS
    Réponses: 1
    Dernier message: 05/05/2009, 00h44
  3. [FPDF] Coordonnées des cellules d'un tableau dynamique
    Par Spectoo dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/04/2009, 08h48
  4. [RegEx] Positions des sous-chaînes grâce aux regex
    Par oneTime dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2008, 13h57

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