sql >> Database teknologi >  >> RDS >> Sqlserver

opdatering af flere kolonner ved hjælp af case statement i sql server

Du bliver nødt til at bytte om på syntaksen. Sagserklæringen vil blive anvendt for hver værdi, du vil opdatere...

UPDATE table SET
    pay1 = CASE WHEN @columnname IN('name1') THEN pay1 * 100 ELSE pay1 END,
    pay2 = CASE WHEN @columnname IN('name1', 'name2') THEN pay2 * 20 ELSE pay2 END,
    pay3 = CASE WHEN @columnname IN('name1', 'name2', 'name3') THEN pay3 * 100 ELSE pay3 END

Det ser ud til, at du rent faktisk vil have en hvis-erklæring...

IF @columnname = 'name1'
    UPDATE table SET pay1 = pay1 * 100, pay2=pay2*20, pay3=pay3* 100

ELSE IF @ColumnName = 'name2'
    UPDATE table SET pay2 = pay2 * 20, pay3 = pay3 * 100

ELSE IF @ColumnName = 'name3'
    UPDATE table SET pay3 = pay3 * 100

Håber det hjælper



  1. Oracle display mere end 24 timer

  2. Viser oracle-appen og får:java.lang.ClassNotFoundException:oracle.forms.engine.Main

  3. Ret "FEJL 1250 (42000):Tabel '...' fra en af ​​SELECT'erne kan ikke bruges i global ORDER-klausul", når du bruger UNION i MySQL

  4. Betinget erklæring i sql-forespørgsel på klassisk ASP-side