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 :

[SQL SERVER 2005] INSERT avec CASE WHEN


Sujet :

Développement SQL Server

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 52
    Points
    52
    Par défaut [SQL SERVER 2005] INSERT avec CASE WHEN
    salut

    j'aimerai remplir un table cible [AA_ecriture] à partir d'une table source [ecri]
    avec un control sur le champs Type de la table [ecri]

    ecrit(id,type,debit,credit)
    aa_ecriture (id,debit,credit)

    le control est le suivant : si ecrit.type = 'c' alors aa_ecriture.credit =ecrit.credit sinon aa_ecriture.debit =ecrit.debit

    j'ai essayé le scipt suivant mais j'ai des ecrreurs de syntaxe que je n'arrive pas a percevoir :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    select [type] case when [type] ='c'
     
    then insert into dbo.AA_ecriture (id,credit)
     
    select id,credit from ecri 
     
    else insert into dbo.AA_ecriture (id,debit)
     
    select id,debit from ecri 
     
    end
     
    from ecri

  2. #2
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Bonjour,

    Ceci devrait marcher :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    INSERT INTO dbo.AA_ecriture (id,credit)
    SELECT id,
    	   CASE [type] WHEN 'c' THEN credit
    				   ELSE debit
    	   END
    FROM ecri
    ++

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    merci,

    ce script ne fais que remplir le champs credit de la table aa_ecriture.

    il faudrait que le champs debit aussi soit rempli quand ecri.type <> 'c'

  4. #4
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    Autant pour moi ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO dbo.AA_ecriture (id,credit,debit)
    SELECT id,
    	   CASE [type] WHEN 'c' THEN credit
    				   ELSE NULL
    	   END,
    	   CASE [type] WHEN 'c' THEN NULL
    				   ELSE debit
    	   END
    FROM ecri
    ++

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 101
    Points : 52
    Points
    52
    Par défaut
    merci camarade, tu me sauve !!

    au passage si c'est possible , j'aimerai savoir qu'elle est l'erreur de syntaxe dans mon 1er script

  6. #6
    Expert éminent sénior
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Points : 12 891
    Points
    12 891
    Par défaut
    La syntaxe justement

    On ne peut pas écrire une requête d'insertion de cette façon ...
    Regardez de la documentation SQL Server pour avoir le détail de la syntaxe de cette commande

    ++

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

Discussions similaires

  1. SQL Server 2005 :probleme avec truncate et insert
    Par blaise4714 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 20/03/2009, 16h11
  2. [SQL Server 2000]Update avec case
    Par nox75 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/10/2007, 20h18
  3. [SQL SERVER 2005] erreur avec sessions
    Par barnet dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2007, 18h16
  4. [sql server]utiliser Insert avec une clé auto
    Par nourbane dans le forum ASP
    Réponses: 6
    Dernier message: 18/05/2006, 23h02
  5. Connection de SQL SERVER 2005 EXPRESS avec HIBERNATE
    Par jerome giraud dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 27/02/2006, 09h07

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