Dans SQL Server 2008, j'ai un set de données contenant des coûts pour l'Est et l'Ouest. J'ajoute un nouveau champ pour un client pour le Canada qui doit être 1,5 fois le coût de l'Est ou de l'Ouest (ce qui est toujours plus élevé). Donc, j'essaie de find un sql que je peux exécuter. J'ai essayé ce qui suit, mais je n'ai pas eu de succès:
UPDATE ShippingCost SET IF EastCost>WestCost Canada= EastCost*1.8 ELSE Canada= WestCost*1.8 ENDIF
Je suis sûr qu'il y a un moyen facile de le faire? Des idées?
Vous devez utiliser Case
UPDATE ShippingCost SET Canada = CASE WHEN EastCost>WestCost THEN EastCost*1.8 ELSE WestCost*1.8 END
Utilisez deux instructions de mise à jour:
UPDATE SHIPPINGCOST SET Canada = EastCost*1.8 WHERE EastCost>WestCost UPDATE SHIPPINGCOST SET Canada = WestCost*1.8 WHERE EastCost<=WestCost
UPDATE ShippingCost SET Canada = 1.5 * CASE WHEN EastCost > WestCost THEN EastCost ELSE WestCost END;
UPDATE ShippingCost SET Canada = GREATEST(EastCoast, WestCoast) * 1.8;
Remarque: Le dialecte T-SQL ne prend pas en charge le GREATEST
.