Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MS SQL Server > Как пользоваться CASE


Автор: MadCoder 31.7.2008, 12:51
Это смешно, но никак не могу заюзать CASE. Есть некоторые данные, в зависимости от которых нужно выполнять определенные действия (SELECT, INSERT, UPDATE). Вот упрощенный пример:
Код

declare @A int;
declare @B int;
    case @B
    WHEN 1 THEN SET @A= 2
    WHEN 2 THEN SET @A= 4
    WHEN 3 THEN SET @A= 1
    WHEN 4 THEN SET @A= 5
    ELSE @A=NULL
    END

Что я делаю не так?

Автор: TaNK 31.7.2008, 12:56
Цитата(MadCoder @ 31.7.2008,  12:51)
Это смешно, но никак не могу заюзать CASE. Есть некоторые данные, в зависимости от которых нужно выполнять определенные действия (SELECT, INSERT, UPDATE). Вот упрощенный пример:
Код

declare @A int;
declare @B int;
    case @B
    WHEN 1 THEN SET @A= 2
    WHEN 2 THEN SET @A= 4
    WHEN 3 THEN SET @A= 1
    WHEN 4 THEN SET @A= 5
    ELSE @A=NULL
    END

Что я делаю не так?

1) 
Код


set @tempy  = case (MONTH(@date1))     --Если месяц ЯНВАРЬ,
              When 1 Then (Year(@date1)-1) --то на 1 уменьшаем год
              ELSE        (Year(@date1)) --иначе не трогаем год
                                          End

2)
Код

select  zdravVol   = (sum(case when pw.ref6_id = 55  then fin.volume else 0 end)) ......

вот примеры использования CASE

Автор: Akina 31.7.2008, 13:03
Цитата(MadCoder @  31.7.2008,  13:51 Найти цитируемый пост)
Что я делаю не так?

Ну попытайся догадаться, чему равно @B на момент выполнения CASE...

Автор: MadCoder 31.7.2008, 13:28
Цитата(Akina @ 31.7.2008,  13:03)

Ну попытайся догадаться, чему равно @B на момент выполнения CASE...

Я написал, что это упрощенный пример. На момент CASE @B равен определенному значению.

Добавлено @ 13:29
TaNK, спасибо! Первый способ то, что надо smile .

Автор: TaNK 31.7.2008, 13:33
> MadCoder 
 smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)