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

MS SQL Server Discussion :

Intégrer une donnée comportant un 'replace' dans un 'group by'


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut Intégrer une donnée comportant un 'replace' dans un 'group by'
    bonjour

    voila, j'ai grossièrement une requete du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT REPLACE(RTRIM(MesDonnes), 'choix1' , choix2)
    FROM maTable
    GROUP BY REPLACE(RTRIM(MesDonnes), 'choix1' , choix2)
    or le regroupement ne fonctionne pas pour les valeurs affectés par 'REPLACE'

    Comment puis-je faire pour que le GROUP BY fonctionne correctement?

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    Quel est le problème exactement ? Ceci fonctionne :
    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
     
    CREATE TABLE #tmp (nb int, txt varchar(20))
     
    INSERT INTO #tmp VALUES (1, 'un')
    INSERT INTO #tmp VALUES (1, 'deux')
    INSERT INTO #tmp VALUES (1, 'trois')
    INSERT INTO #tmp VALUES (1, 'quatre')
    INSERT INTO #tmp VALUES (1, 'cinq')
    INSERT INTO #tmp VALUES (1, 'six')
    INSERT INTO #tmp VALUES (1, 'sept')
    INSERT INTO #tmp VALUES (1, 'huit')
     
    SELECT COUNT(nb) as cnt, REPLACE(RTRIM(txt), 'quatre' , 'cinq')
    FROM #tmp
    GROUP BY REPLACE(RTRIM(txt), 'quatre' , 'cinq')
    GO
     
    DROP TABLE #tmp

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    114
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 114
    Par défaut
    sinon


    SELECT REPLACE(RTRIM(MesDonnes), 'choix1' , choix2) as toto
    FROM maTable
    GROUP BY toto

  4. #4
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    Malheureusement ce code est refusé (Motif "Invalid column name") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT REPLACE(RTRIM(MesDonnes), 'choix1' , choix2) as toto
    FROM maTable
    GROUP BY toto
    Je vais clarifier ma requete parce que certeines chose qui n'auraient pas du être oubliés ont été mis de coté hier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT REPLACE(RTRIM(MaDonnee), 'choix1' , choix2) 'MaColonne',
    UneAutreDonnees SUM(UnTotal)
    FROM maTable GROUP BY REPLACE(RTRIM(MaDonnee), 'choix1' , choix2) HAVING SUM(UnTotal) <> 0
    Voila, tout est là
    La requete ne génére pas d'erreur mais les lignes concernées par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    REPLACE(RTRIM(MaDonnee), 'choix1' , choix2)
    ont disparus...

    Merci beaucoup de votre coup de main!

  5. #5
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Par défaut
    Vous devez poster le code tel que vous l'utiliser chez vous.

    Découvrez la FAQ de MS SQL Server.
    La chance accorde ses faveurs aux esprits avertis !

  6. #6
    Membre éclairé
    Avatar de repié
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    335
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Décembre 2004
    Messages : 335
    Par défaut
    ce code est celui que j'utilise actuelement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT REPLACE(RTRIM(MaDonnee), 'choix1' , choix2) 'MaColonne',
    UneAutreDonnees,
    SUM(UnTotal)
    FROM maTable
    GROUP BY REPLACE(RTRIM(MaDonnee), 'choix1' , choix2)
    HAVING SUM(UnTotal) <> 0
    Je préfère garder les nom exactes des tables et colonnes de cotés, professionnelement oblige...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/01/2012, 16h05
  2. Intégrer les données de plusieurs fichiers dans une table
    Par soad029 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 25/11/2007, 03h57
  3. Réponses: 1
    Dernier message: 26/09/2007, 17h16
  4. Réponses: 14
    Dernier message: 22/05/2007, 00h32
  5. Réponses: 7
    Dernier message: 11/01/2007, 18h54

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