Problèmes sur des Case When imbriqués

cs_Orion01 Messages postés 10 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 28 novembre 2007 - 28 nov. 2007 à 13:21
cs_Orion01 Messages postés 10 Date d'inscription mardi 23 décembre 2003 Statut Membre Dernière intervention 28 novembre 2007 - 28 nov. 2007 à 18:47
Bonjour,



J'ai un souci sur des case when que je veux imbriquer.
Je suis sous SQL7 et le code suivant se trouve dans une vue.






select
case
 when prd.cdrescmr like 'SM%' then
  case
  when prd.cdtypprdach = '01' then
   case
   when prd.ctcan = 'NOP' then min(prd.pxvteeurtr3)
   else max(prd.pxvteeurtr3) -- pxvteeurtr3 = prix de vente des colis standards en SM
   end
  else
   case
   when prd.ctcan = 'NOP' then min(prd.pxvteeurcmptr3)
   else max(prd.pxvteeurcmptr3) -- pxvteeurcmptr3 = prix de vente des composants en SM
   end
  end
 else
 case
 when prd.cdtypprdach = '01' then
  case
  when prd.ctcan = 'NOP' then min(prd.pxvtegeneur)
  else max(prd.pxvtegeneur) -- pxvtegeneur = prix de vente des colis standards en HM
  end
 else
  case
  when prd.ctcan = 'NOP' then min(prd.pxvtegen)
  else max(prd.pxvtegen) -- pxvtegen = prix de vente des composants en HM
  end
 end 
 as PrxVenteTTC
from table prd
where...







Est il possible d'imbriquer des case when comme ca??
Parce que dans cette version de code j'ai le message d'erreur suivant :

Server: Msg 156, Level 15, State 1, Procedure export_plana_All2, Line 166
Incorrect syntax near the keyword 'as'.




Merci pour votre aide.
A voir également:

9 réponses

pneau Messages postés 258 Date d'inscription mercredi 21 avril 2004 Statut Membre Dernière intervention 27 octobre 2010 5
28 nov. 2007 à 13:37
salt
apres vérif rapide, il semblerait qu'il te manque un "END" sur l'un de tes case

select
case when prd.cdrescmr like 'SM%' then
   case when prd.cdtypprdach = '01' then
    case when prd.ctcan = 'NOP' then min(prd.pxvteeurtr3)
           else max(prd.pxvteeurtr3) -- pxvteeurtr3 = prix de vente des colis standards en SM
     end
   else  
  case
         when prd.ctcan = 'NOP' then min(prd.pxvteeurcmptr3)
         else max(prd.pxvteeurcmptr3) -- pxvteeurcmptr3 = prix de vente des composants en SM
  end
  end
else
 case when prd.cdtypprdach = '01' then
  case when prd.ctcan = 'NOP' then min(prd.pxvtegeneur)
  else max(prd.pxvtegeneur) -- pxvtegeneur = prix de vente des colis standards en HM
  end
 else
  case
    when prd.ctcan = 'NOP' then min(prd.pxvtegen)
    else max(prd.pxvtegen) -- pxvtegen = prix de vente des composants en HM
    end
  end
END

Pat

 Don't Worry , Be Happy
0
Rejoignez-nous