2014-01-16 2 views
0

Я хочу иметь возможность устанавливать значения для двух разных полей с разными значениями, которые удовлетворяют одному и тому же аргументу case.обновить и установить несколько полей с тем же оператором case

Например.

DECLARE @RATE1 AS FLOAT 
DECLARE @RATE2 AS FLOAT 


UPDATE TABLE1 
SET CATEGORY = CASE WHEN DATE >= '16 JAN 2014' THEN 'NEW' 

Но в то же время я хочу также SET @ rate1 = 0,001

Затем

WHEN DATE < '16 JAN 2014' THEN 'OLD' 
END 

Но в то же время я хочу также SET @ rate2 = 0,002

это как-то возможно?

+0

что эти переменные '@ RATE1' и' @ RATE2' связаны с вашим оператором обновления ??? –

+0

Две переменные определяются теми же критериями, что и оператор обновления, поэтому было интересно, есть ли способ установить их одновременно. – HL8

ответ

0
UPDATE TABLE1 
SET CATEGORY = CASE WHEN DATE >= '16 JAN 2014' THEN 'NEW' 
        WHEN DATE < '16 JAN 2014' THEN 'OLD' 
       END 

Для установки значения переменной вам нужно отдельное заявление что-то вроде этого

IF EXISTS (SELECT 1 FROM TABLE1 WHERE DATE >= '16 JAN 2014') 
    BEGIN 
     SET @RATE1 = 0.001; 
    END 
    ELSE 
    BEGIN 
     SET @RATE2 = 0.002; 
    END 

Если предположить, что DATE это поле VARCHAR и она Дата хранится в формате ДД МММ YYY. не является хорошим выбором типа данных, хотя для хранения данных даты.

+0

Привет, спасибо вам за помощь. Я надеялся, что существует способ установить переменную и поле, не повторяя вновь установленные критерии. – HL8

+0

, так как это две разные операции, они будут выполняться отдельно, вы можете сделать оператор присваивания переменной немного проще увидеть мое обновление –

Смежные вопросы