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 ou bien union


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Par défaut Pivot ou bien union
    salut,

    j'ai besoin de recuperer des valeur ex(val1,val2,val3) pour une duree de 3 jours.

    mon resultat finale doir etre comme ça:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    Jours-2              jours-1         jours  
    ID   val1  val2 val3     val1  val2 val3  val1 val2 val3 
     
    1      10     1     2         3      5    4       2   2     13
    2      4       2    12        1      2    5       1   24   103
    ........
    ........
    ......
    100   11     13   10        13    15  14     12   21    113

    j'arrive à recuper tout ça mais dans une meme table.
    je m'explique.
    pour chaque id j'ai trois ligne.
    chaque ligne correspond à une journée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    ID   val1  val2 val3      
    1      10     1     2 
    1       3      5    4           
    1       2      2     13
    2       4      2    12        
    2       5      4     1      
    2       5       1   24   
    ........
    ........
    ......
    100   11      13    10
    100   13      15    14     
    100   12      21    113

    est ce que l'utilisation de pivot puet m'aider??
    des idées?

  2. #2
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Je ne connais pas les capacité de pivot de SQL Server.

    En contrepartie, je sais que de nombreux autres SGBD ne supportent aucune fonction de ce type.

    Donc dans l'optique de conserver ton code un minimum portable et compréhensible par tous, je te conseille vivement d'utiliser des auto-jointures pour récupérer les données pour J, J-1 et J-2.

    PS : Je ne vois pas de notion de "jour" dans ton exemple. Est-ce que tu as cette information quelque part ?
    (genre, comme garantis-tu que la seconde ligne de ton résultat actuel c'est bien les valeurs de ID=1 à j-1 et non à j-2, n'ayant pas de données à j-1 ? comment garantis-tu l'ordre ?)

    Avec une structure de ce type, je verrais un truc du genre :

    table OBJ
    ID (pk)
    (le reste on s'en fout)

    table VAL
    ID (fk vers OBJ.ID)
    JOUR (int)
    V1 (val1)
    V1 (val2)
    V1 (val3)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    select obj.id, val1.v1, val1.v2, val1.v3, val2.v1, val2.v2, val2.v3, val3.v1, val3.v2, val3.v3
    from obj
    left outer join val val1 on val1.id = obj.id and val1.jour = round(dbo.getdate(), 0)
    left outer join val val2 on val2.id = obj.id and val2.jour = round(dbo.getdate(), 0) - 1
    left outer join val val3 on val3.id = obj.id and val3.jour = round(dbo.getdate(), 0) - 2

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Par défaut
    ok merci pour ta réponse.
    j'ai un autre soucis.

    je veux bien à partir de cett table qui represente des données par (10 min):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    00:00	1		
    00:10	2	
    00:20	3		
    00:30	4	
    00:40	5		
    00:50	6
    Recuperer une table qui ressemble à cafaire la somme des 3 lignes)
    autrement dis recuperer dans un intervalle de 30min.

    je trouve pas comment regrouper mes données.

    des idées?
    Merci d'avance.

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Le plus compliqué, c'est de formatter ton heure de la façon suivante :

    0:00 => 0:00
    0:10 => 0:00
    0:20 => 0:00
    0:30 => 0:30
    0:40 => 0:30
    0:50 => 0:30

    Une fois que t'as réussi à faire ça, t'as plus qu'à faire un sum() sur tes val, et de faire un group by ta date mise en forme avec la règle ci-dessus.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    433
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 433
    Par défaut
    merci pour ta reponse.

    mais comment je peux le faire ???

    c'est ça la question:s

  6. #6
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Avec une conbinaison entre les fonctions de formattage de dates, des substr et datepart, et un bon gros case des familles.

    Après, je peux pas entrer dans le détail, j'ai pas de SQL Server sous la main pour faire un test.

    En tout cas, ça va pas être joli au final, SQL Server est assez pauvre en ce qui concerne le formattage des dates, donc beaucoup de découpage à la main...

Discussions similaires

  1. Comment bien déboguer son code ?
    Par D[r]eadLock dans le forum Débuter
    Réponses: 47
    Dernier message: 02/04/2024, 17h06
  2. Programmer encore en VB 6 c'est pas bien ? Pourquoi ?
    Par Nektanebos dans le forum Débats sur le développement - Le Best Of
    Réponses: 85
    Dernier message: 10/03/2009, 15h43
  3. UNION de PIVOT
    Par loutsky dans le forum Access
    Réponses: 2
    Dernier message: 21/03/2006, 09h25
  4. Comment bien gerer la mémoire avec les TStringList?
    Par david_chardonnet dans le forum Langage
    Réponses: 5
    Dernier message: 18/06/2003, 10h57
  5. Créer une vue pour trier une requete UNION ?
    Par Etienne Bar dans le forum SQL
    Réponses: 3
    Dernier message: 03/01/2003, 21h22

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