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 :

Update avec Case


Sujet :

MS SQL Server

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut Update avec Case
    Bonjour a tous,

    Je tente de faire l'update suivant
    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
    27
    28
    29
    30
    update tblImportKE30_IK3
    set
    	tblImportKE30_IK3.IK3_Etat='KE30',
    	tblImportKE30_IK3.EXR_ExchangeRate = EXR.EXR_ExchangeRate,
    	tblImportKE30_IK3.IK3_Month = right(tblImportKE30_IK3.IK3_YearMonth,2),
    	tblImportKE30_IK3.IK3_Trim = MOC.MOC_Quarter,
    	tblImportKE30_IK3.IK3_COGSEuros = tblImportKE30_IK3.IK3_SalesEuros - tblImportKE30_IK3.IK3_MarginEuros,
    	case when tblImportKE30_IK3.IK3_Qty > 0 then
    	tblImportKE30_IK3.IK3_PVUEuros = tblImportKE30_IK3.IK3_SalesEuros / tblImportKE30_IK3.IK3_Qty,
    	tblImportKE30_IK3.IK3_PVUUSD = (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty,
    	tblImportKE30_IK3.IK3_CRUEuros = (tblImportKE30_IK3.IK3_SalesEuros - tblImportKE30_IK3.IK3_MarginEuros) / tblImportKE30_IK3.IK3_Qty,
    	tblImportKE30_IK3.IK3_CRUUSD = (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty,
    	end
    	tblImportKE30_IK3.IK3_SalesUSD = tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate,
    	tblImportKE30_IK3.IK3_MarginUSD =  tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate,
    	tblImportKE30_IK3.IK3_COGSUSD = tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate,
    	tblimportKE30_IK3.IK3_Closed = 0
     
    from tblImportKE30_IK3
    -- Jointure pour le calcul du taux $
    	left outer join tblExchangeRate_EXR EXR
    		on EXR.EXR_MonthCode=tblImportKE30_IK3.IK3_YearMonth
    		and EXR_CurrencyCode='USD'
     
    -- Jointure pour calcul Trimestre
    	left outer join tblMonthCoding_MOC MOC
    		on MOC.MOC_MonthId=CAST(RIGHT(tblImportKE30_IK3.IK3_YearMonth,2) as SMALLINT)
     
    where ((IK3_Closed =0 or IK3_Closed is null) and (IK3_Manuel = 0 or IK3_Manuel is null));
    GO
    Mais j'obtiens : Syntaxe incorrecte vers le mot clé 'case'.

    Ou est l'erreur

    Merci pour votre aide

    Tornade

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut Case generalise
    Case Généralisé:
    CASE WHEN expression THEN Valeur END
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    case when tblImportKE30_IK3.IK3_Qty > 0 then
        tblImportKE30_IK3.IK3_PVUEuros = tblImportKE30_IK3.IK3_SalesEuros / tblImportKE30_IK3.IK3_Qty,
        tblImportKE30_IK3.IK3_PVUUSD = (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty,
        tblImportKE30_IK3.IK3_CRUEuros = (tblImportKE30_IK3.IK3_SalesEuros - tblImportKE30_IK3.IK3_MarginEuros) / tblImportKE30_IK3.IK3_Qty,
        tblImportKE30_IK3.IK3_CRUUSD = (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty,
        end
    devient

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    tblImportKE30_IK3.IK3_PVUEuros = case when tblImportKE30_IK3.IK3_Qty > 0 then
     tblImportKE30_IK3.IK3_SalesEuros / tblImportKE30_IK3.IK3_Qty else null end,
    tblImportKE30_IK3.IK3_PVUUSD = case when tblImportKE30_IK3.IK3_Qty > 0 then
    (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty else null end,
    tblImportKE30_IK3.IK3_CRUEuros = case when tblImportKE30_IK3.IK3_Qty > 0 then
     (tblImportKE30_IK3.IK3_SalesEuros - tblImportKE30_IK3.IK3_MarginEuros) / tblImportKE30_IK3.IK3_Qty else null end,
    tblImportKE30_IK3.IK3_CRUUSD = case when tblImportKE30_IK3.IK3_Qty > 0 then
     (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty else null end,

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut
    Merci pour ton aide, mais j'ai modifier :

    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
    update tblImportKE30_IK3
    set
    	tblImportKE30_IK3.IK3_Etat='KE30',
    	tblImportKE30_IK3.EXR_ExchangeRate = EXR.EXR_ExchangeRate,
    	tblImportKE30_IK3.IK3_Month = right(tblImportKE30_IK3.IK3_YearMonth,2),
    	tblImportKE30_IK3.IK3_Trim = MOC.MOC_Quarter,
    	tblImportKE30_IK3.IK3_COGSEuros = tblImportKE30_IK3.IK3_SalesEuros - tblImportKE30_IK3.IK3_MarginEuros,
    	case when tblImportKE30_IK3.IK3_Qty > 0 then
    	tblImportKE30_IK3.IK3_PVUEuros = tblImportKE30_IK3.IK3_SalesEuros / tblImportKE30_IK3.IK3_Qty,
    	end
    	case when tblImportKE30_IK3.IK3_Qty > 0 then
    	tblImportKE30_IK3.IK3_PVUUSD = (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty,
    	end
    	case when tblImportKE30_IK3.IK3_Qty > 0 then
    	tblImportKE30_IK3.IK3_CRUEuros = (tblImportKE30_IK3.IK3_SalesEuros - tblImportKE30_IK3.IK3_MarginEuros) / tblImportKE30_IK3.IK3_Qty,
    	end
    	case when tblImportKE30_IK3.IK3_Qty > 0 then
    	tblImportKE30_IK3.IK3_CRUUSD = (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty,
    	end
    	tblImportKE30_IK3.IK3_SalesUSD = tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate,
    	tblImportKE30_IK3.IK3_MarginUSD =  tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate,
    	tblImportKE30_IK3.IK3_COGSUSD = tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate,
    	tblimportKE30_IK3.IK3_Closed = 0
    ..........
    Avec ou sans les END j'obtiens toujours un message d'erreur

    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 249
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 249
    Points : 1 745
    Points
    1 745
    Par défaut essai ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    tblImportKE30_IK3.IK3_CRUUSD = case when tblImportKE30_IK3.IK3_Qty > 0 then (tblImportKE30_IK3.IK3_SalesEuros * EXR.EXR_ExchangeRate - tblImportKE30_IK3.IK3_MarginEuros * EXR.EXR_ExchangeRate) / tblImportKE30_IK3.IK3_Qty else null end,
    j'ai verifie, ca marche!

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    219
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 219
    Points : 121
    Points
    121
    Par défaut
    Merci

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

Discussions similaires

  1. Update avec Case
    Par vad67 dans le forum DB2
    Réponses: 2
    Dernier message: 07/12/2010, 21h26
  2. UPDATE avec CASE
    Par yaboki dans le forum SQL
    Réponses: 3
    Dernier message: 16/08/2010, 17h30
  3. [MySQL] Update avec case à cocher
    Par Vetchostar dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 01/11/2008, 14h28
  4. update avec Case et PL/SQL
    Par -Mapk- dans le forum PL/SQL
    Réponses: 6
    Dernier message: 12/10/2007, 16h32
  5. [SQL Server 2000]Update avec case
    Par nox75 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 07/10/2007, 20h18

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