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 :

GROUP BY sur des champs TEXTE et des NULL


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Février 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyste de données

    Informations forums :
    Inscription : Février 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut GROUP BY sur des champs TEXTE et des NULL
    Bonjour,

    J'essaie de grouper les données suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    SELECT [NUM_DV],[0],[1],[2],[3],[4]
    FROM(
    VALUES
    ('RPJMEA',	NULL,	NULL,	NULL,	NULL,	NULL),
    ('RPJMEA',	NULL	,NULL,	NULL,	NULL,	'PARIS MONTPARNASSE 1 ET 2'),
    ('RPJMEA',	NULL,	NULL,	'NANTES',	'PARIS MONTPARNASSE 1 ET 2',	NULL),
    ('RPJMEA',	'ST NAZAIRE',	'NANTES',	NULL,	NULL,	NULL)) AS DATA ([NUM_DV],[0],[1],[2],[3],[4])
    J'aimerais aboutir au résultat suivant:

    RPJMEA, ST NAZAIRE, NANTES, NANTES,PARIS MONTPARNASSE 1 ET 2, PARIS MONTPARNASSE 1 ET 2

    Le GROUP BY ne fonctionne pas car j'ai des valeurs NULL.

    Auriez vous une solution svp ?

    MERCI

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Commencez par respecter la charte de postage !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Analyste de données
    Inscrit en
    Février 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Analyste de données

    Informations forums :
    Inscription : Février 2016
    Messages : 10
    Points : 5
    Points
    5
    Par défaut
    Ok je me suis trompé de rubrique. Si l'erreur est ailleurs, je vous prie de m'excuser. Je voudrais savoir tout de même où j'ai fauté .

    J'ai trouvé une solution vraiment nulle à mon problème. Qu'en dites vous ?

    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
    20
    21
    22
    23
    24
    25
    26
     
     
    WITH DATA AS ( 
    SELECT [NUM_DV],[0],[1],[2],[3],[4]
    FROM(
    VALUES
    ('RPJMEA',	NULL,	NULL,	NULL,	NULL,	NULL),
    ('RPJMEA',	NULL	,NULL,	NULL,	NULL,	'PARIS MONTPARNASSE 1 ET 2'),
    ('RPJMEA',	NULL,	NULL,	'NANTES',	'PARIS MONTPARNASSE 1 ET 2',	NULL),
    ('RPJMEA',	'ST NAZAIRE',	'NANTES',	NULL,	NULL,	NULL)) AS DATA ([NUM_DV],[0],[1],[2],[3],[4]))
     
    , PART1 AS
    (
    SELECT DATA.NUM_DV,[0],[1]
    FROM DATA
    WHERE [0] is not null and [1] is not null)
     
    ,PART2 AS
    (SELECT DATA.NUM_DV,[2],[3]
    FROM DATA
    WHERE [2] is not null and [3] is not null)
     
     
    SELECT PART1.NUM_DV,PART1.[0], PART1.[1], PART2.[2], PART2.[3]
    FROM PART1
    left outer join PART2 on PART1.NUM_DV=PART2.NUM_DV

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 768
    Points : 52 719
    Points
    52 719
    Billets dans le blog
    5
    Par défaut
    Il n'y a pas de GROUP BY !
    Quel est le message d'erreur ?
    Que voulez vous obtenir ?

    ENCORE UNE FOIS : RESPECTEZ LA CHARTE DE POSTAGE !

    a +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Mars 2016
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Mars 2016
    Messages : 58
    Points : 105
    Points
    105
    Par défaut
    Bonjour

    Je suspecte un pb de conception de BDD mais ceci me semble repondre a la question.

    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
    20
    21
    22
    23
     
    ;
     
    WITH TMP AS
      (SELECT [NUM_DV],
              [0],
              [1],
              [2],
              [3],
              [4] FROM(
                       VALUES ('RPJMEA', NULL, NULL, NULL, NULL, NULL), ('RPJMEA', NULL,NULL, NULL, NULL, 'PARIS MONTPARNASSE 1 ET 2'), ('RPJMEA', NULL, NULL, 'NANTES', 'PARIS MONTPARNASSE 1 ET 2', NULL), ('RPJMEA', 'ST NAZAIRE', 'NANTES', NULL, NULL, NULL)) AS DATA ([NUM_DV],
    [0],
    [1],
    [2],
    [3],
    [4]))
    SELECT TOP 1 NUM_DV,
         MAX([0]) OVER (PARTITION BY NUM_DV),
         MAX([1]) OVER (PARTITION BY NUM_DV),
         MAX([2]) OVER (PARTITION BY NUM_DV),
         MAX([3]) OVER (PARTITION BY NUM_DV),
         MAX([4]) OVER (PARTITION BY NUM_DV)
    FROM TMP

  6. #6
    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,

    en quoi les NULL vous empêchent-ils de faire un GROUP BY ? Les NULL sont ignorés par les fonction d'agrégat

    essayez ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    SELECT [NUM_DV],MAX([0]),MAX([1]),MAX([2]),MAX([3]),MAX([4])
    FROM(
    VALUES
    ('RPJMEA',	NULL,	NULL,	NULL,	NULL,	NULL),
    ('RPJMEA',	NULL	,NULL,	NULL,	NULL,	'PARIS MONTPARNASSE 1 ET 2'),
    ('RPJMEA',	NULL,	NULL,	'NANTES',	'PARIS MONTPARNASSE 1 ET 2',	NULL),
    ('RPJMEA',	'ST NAZAIRE',	'NANTES',	NULL,	NULL,	NULL)) AS DATA ([NUM_DV],[0],[1],[2],[3],[4])
    GROUP BY NUM_DV

Discussions similaires

  1. Créer des menus déroulants à partir des champs textes
    Par abdelkarim_1987 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 08/10/2013, 13h40
  2. Réponses: 2
    Dernier message: 24/03/2010, 17h43
  3. calcul des nombres saisies dans des champs text
    Par saramery dans le forum Langage
    Réponses: 7
    Dernier message: 26/01/2010, 13h27
  4. Réponses: 7
    Dernier message: 06/01/2010, 08h32
  5. Comment remplir des champs TEXTES avec des SESSIONS
    Par GoodWear dans le forum Langage
    Réponses: 14
    Dernier message: 28/10/2009, 10h12

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