Discussion: Update Case incrémentale [2012]

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2017
    Messages : 44
    Points : 42
    Points
    42

    Par défaut Update Case incrémentale

    Bonjour tout le monde ,

    J'aurais besoin de votre aide pour une requête UPDATE :

    Voici mon probleme je veux faire un update sur un champ en fonction d'un autre champ :

    mon cas est le suivant :

    si la valeur LIGNE_EF_DESC ='Hors Groupe' alor le champ LIGNE_EF_INDEX =1
    si la valeur LIGNE_EF_DESC ='CAG' alor le champ LIGNE_EF_INDEX =2
    si si la valeur LIGNE_EF_DESC ='CARG' alor le champ LIGNE_EF_INDEX =3

    sinon LIGNE_EF_INDEX=max(LIGNE_EF_INDEX)+1

    voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    update dwh.dim_pnl_tunisie
    set LIGNE_EF_INDEX=
    (case LIGNE_EF_DESC when 'Hors Groupe' then 1
    when 'CAG' then 2
    when 'CARG' then 3
    when 'Cout Transport Terrestre' then 3
     
    else LIGNE_EF_INDEX=max(LIGNE_EF_INDEX)+1
    end)
     
    where ligne_ef_index=0

    l'erreur que j'ai est la suivante : Syntaxe incorrecte vers '='

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de SQLpro
    Homme Profil pro
    Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Inscrit en
    mai 2002
    Messages
    17 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert SGBDR & SQL, spécialiste Microsoft SQL Server
    Secteur : Conseil

    Informations forums :
    Inscription : mai 2002
    Messages : 17 842
    Points : 41 640
    Points
    41 640
    Billets dans le blog
    1

    Par défaut

    Pourquoi voulez-vous mettre des parenthèses ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    UPDATE dwh.dim_pnl_tunisie
    SET    LIGNE_EF_INDEX = CASE LIGNE_EF_DESC 
                               WHEN 'Hors Groupe' THEN 1
                               WHEN 'CAG'         THEN 2
                               WHEN 'CARG'        THEN 3
                               WHEN 'Cout Transport Terrestre' THEN 3
                               ELSE (SELECT MAX(LIGNE_EF_INDEX)+1 FROM dwh.dim_pnl_tunisie)
                            END
    Votre ELSE ne peut faire un auto incrément directement car il faudrait faire un GROUP BY

    Enfin votre UPDATE n'a aucun intérêt et est même stupide...Car il faudrait le refaire à chaque mise à jour. Vous feriez mieux de faire une vue.

    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...
    * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    mai 2017
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : mai 2017
    Messages : 44
    Points : 42
    Points
    42

    Par défaut

    Merci pour ton aide

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

Discussions similaires

  1. [SQL] UPDATE + CASE + ceci, sur deux variables
    Par logiclogic dans le forum SAS Base
    Réponses: 6
    Dernier message: 31/05/2013, 14h47
  2. update avec Case et PL/SQL
    Par -Mapk- dans le forum PL/SQL
    Réponses: 6
    Dernier message: 12/10/2007, 16h32
  3. [SQL Server 2000]Update avec case
    Par nox75 dans le forum MS SQL-Server
    Réponses: 3
    Dernier message: 07/10/2007, 20h18
  4. [JTable avancé]Update d'une seule case à moindre coût
    Par nicorama dans le forum Composants
    Réponses: 2
    Dernier message: 15/05/2007, 05h24
  5. Efficacite de CASE dans un UPDATE ?
    Par k'n1 dans le forum MS SQL-Server
    Réponses: 29
    Dernier message: 12/12/2006, 10h16

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