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 :

Nombre de colonnes impliquées dans unpivot


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Directeur
    Inscrit en
    Octobre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 6
    Par défaut Nombre de colonnes impliquées dans unpivot
    Dans une procédure je dois normaliser un grand nombre de colonnes (109):
    SELECT
    [Signal_Index]
    ,[Sample_TDate_1] ,[Sample_Value_1],[Sample_Qual_1],[Sample_Modified_1]
    ,[Sample_TDate_2],[Sample_Value_2],[Sample_Qual_2],[Sample_Modified_2]
    ,[Sample_TDate_3],[Sample_Value_3],[Sample_Qual_3],[Sample_Modified_3]
    ....
    ,[Sample_TDate_35],[Sample_Value_35],[Sample_Qual_35],Sample_Modified_35]
    ,[Sample_TDate_36],[Sample_Value_36],[Sample_Qual_36],Sample_Modified_36]

    En définissant 3 UNPIVOT sur [Sample_TDate], [Sample_Value] et [Sample_Qual]

    j'obtiens à peu près ce que je veux sous la forme d'une table de valeurs (Sample_Value) horodatées (Sample_TDate).

    Il m'est apparu la requête retournait plus de lignes qu'il ne faudrait.
    Je me suis aperçu également qu'en se limitant à seulement 3x10 colonnes pour chaque UNPIVOT, le nombre de lignes retournées était correct.
    Au delà, des lignes sont rajoutées. Par exemple si je travaille sur 3x19 colonnes, avec un nombre de lignes dans la table de 124, je devrais obtenir 124 x 19 = 2356; au lieu de ça 3844 lignes sont retournées.

    J'aimerai savoir si je suis sur la bonne piste ou si je passe à coté de quelque chose de flagrant.

    D'autre part, si ce problème est confirmé, quelle serait l'autre solution ?
    Merci d'avance

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 448
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 448
    Par défaut
    Il n'y a pas de bug à ma connaissance mais...
    Si vous avez un soucis avec UNPIVOT, utilisez CROSS APPLY.

    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
     
    SELECT
     X.*
    FROM dbo.MaTable AS T
    CROSS APPLY (
     SELECT
     'val1'
     , T.val1
     UNION ALL SELECT
     'val2'
     , T.val2
     UNION ALL SELECT
     'val3'
     , T.val3
    ) AS X (Champ, Valeur)
    Version SQL 2008+ :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    SELECT
     X.*
    FROM dbo.MaTable AS T
    CROSS APPLY (
     SELECT
     *
     FROM (
      VALUES('val1', T.val1), ('val2', T.val2), ('val3', T.val3)
     ) AS X (Champ, Valeur)
    ) AS X

Discussions similaires

  1. [C#] Nombre de colonne dynamique dans datagridview
    Par Job dans le forum Windows Forms
    Réponses: 3
    Dernier message: 22/08/2011, 20h14
  2. Nombre de colonnes maxi dans un dataset.
    Par BilouMac dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/02/2010, 13h33
  3. Nombre de colonnes conseillé dans une table.
    Par S-Kayp dans le forum Débuter
    Réponses: 15
    Dernier message: 13/05/2008, 17h58
  4. nombre de colonnes dynamiques dans une Datagrid
    Par khayri dans le forum Struts 1
    Réponses: 2
    Dernier message: 04/06/2007, 21h14
  5. [Etat]Nombre de colonnes variables dans un état
    Par milou161185 dans le forum IHM
    Réponses: 15
    Dernier message: 27/03/2007, 16h39

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