4 votes

SQL Server - mise à jour d'une colonne basée sur la valeur d'une autre colonne

Comment puis-je mettre à jour une colonne dans TableA valeur trouvée dans une autre table, Table B en fonction d'une autre colonne, Type en TableA

Par exemple

Tableau A

Location Type Value
  USA    Dog   20
  UK     Cat   30

Tableau B

Dog   Cat Rabbit
 50   70    100

La logique :

  • Si tableA.Value = Dog puis actualiser TableA.Value = TableB.Dog
  • Si tableA.Value = Cat puis actualiser TableA.Value = TableB.Cat
  • Si tableA.Value = Rabbit puis actualiser TableA.Value = TableB.Rabbit

Note : Il n'y a que 3 options, le codage dur est donc acceptable.

Résultat

Tableau A

Location Type  Value
USA      Dog   50
UK       Cat   70

6voto

astander Points 83138

Que diriez-vous de quelque chose comme

UPDATE TableA
SET Value = 
CASE Type
  WHEN 'DOG' then B.Dog
  WHEN 'CAT' then B.Cat
  WHEN 'RABBIT' then B.Rabbit
  ELSE Value
END
FROM TableB b

DEMO de SQL Fiddle

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X