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

Langage SQL Discussion :

[TSQL] Pb de syntaxe avec CASE WHEN & REPLACE


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2019
    Messages : 20
    Par défaut [TSQL] Pb de syntaxe avec CASE WHEN & REPLACE
    Bonjour,
    Je débute en SQL, je vous remercie par avance pour votre aide.
    J'ai des noms de commerciaux [REPNUM_0] qui sont
    ANMA
    AB-E
    SMA-S
    FSA
    etc.

    Je souhaite une colonne où j'ai l'identité du commercial, qui est soit la chaîne de caractère avant le "-", soit la chaîne de caractère complète s'il n'y a pas le tiret.
    Dans mon exemple :
    ANMA
    AB
    SMA
    FSA

    Si l'option avant le tiret fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT 
          [REPNUM_0],
               REPLACE(SUBSTRING([SALESREP].[REPNUM_0], 1,CHARINDEX('-',REPNUM_0)),'-','') as REPNUM2_0
      FROM [cfiprod].[CFIPRD].SALESREP
    Je n'arrive pas à syntaxer correctement le CASE WHEN :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT [REPNUM_0]
    	,CASE 
    		WHEN CHARINDEX('-', REPNUM_0) > 0
    			THEN REPLACE(SUBSTRING([SALESREP].[REPNUM_0], 1, CHARINDEX('-', REPNUM_0)), '-', '') AS REPNUM2_0
    		ELSE [SALESREP].[REPNUM_0] = REPNUM2_0
    		END
    J'ai été aidée par un consultant sur le premier bout de code, et j'aimerais garder le même principe avec un CASE WHEN.
    Même si c'est important pour moi que ça fonctionne, il m'est plus important de comprendre où est mon erreur.

    Je vous remercie par avance pour votre aide.

  2. #2
    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
    Par défaut
    bonjour,

    L'alias doit se mettre en toute fin, donc après le END du CASE

  3. #3
    Membre averti
    Femme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2019
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2019
    Messages : 20
    Par défaut
    Super, merci bcp !

    Comme cela donc, et ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    SELECT [REPNUM_0]
    	,CASE 
    		WHEN CHARINDEX('-', REPNUM_0) > 0
    			THEN REPLACE(SUBSTRING([SALESREP].[REPNUM_0], 1, CHARINDEX('-', REPNUM_0)), '-', '') 
    		ELSE [SALESREP].[REPNUM_0]
    		END
    		AS REPNUM2_0
      FROM [cfiprod].[CFIPRD].SALESREP

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

Discussions similaires

  1. Problème de syntaxe avec CASE WHEN
    Par Lord_Chesseling dans le forum Langage SQL
    Réponses: 17
    Dernier message: 26/01/2015, 21h08
  2. Syntaxe SELECT CASE WHEN avec Microsoft.ACE.OLEDB.12.0
    Par kluh dans le forum Langage SQL
    Réponses: 5
    Dernier message: 28/12/2010, 09h59
  3. Requête avec Case When ..
    Par Passarinho44 dans le forum Langage SQL
    Réponses: 20
    Dernier message: 08/08/2008, 16h03
  4. Réponses: 5
    Dernier message: 26/02/2008, 12h42
  5. Pb avec case when !
    Par Brice Yao dans le forum Langage SQL
    Réponses: 11
    Dernier message: 05/08/2005, 08h20

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