Оператор IIF to CASE WHEN

Добрый день .. Мне трудно преобразовать ms access sql в sql server 2005 sql query .. и вот мой код:

UPDATE Data SET 
  Data.Mean =([std1]+[std2]+[std3]/
IIf((3+(([std1]=0)+([std2]=0)+([std3]=0)))>0,
  (3+(([std1]=0)+([std2]=0)+([std3]=0))),1) 
WHERE Data.ID=125

Я думаю, что лучший способ преобразовать это — использовать CASE WHEN STATEMENT или любые предложения/альтернативы, которые вы уже знаете?

Заранее спасибо!


person Unknownymous    schedule 27.12.2013    source источник
comment
IIF(A,B,C) становится CASE WHEN A THEN B ELSE C END   -  person ta.speot.is    schedule 27.12.2013


Ответы (1)


Попробуй это

    UPDATE Data SET 
     Mean =([std1]+[std2]+[std3])/
    case when abs([std1])+abs([std2])+abs([std3])=0 then 1 else 
      3 + case [std1] when 0 then -1 else 0 end 
        + case [std2] when 0 then -1 else 0 end 
        + case [std3] when 0 then -1 else 0 end
    end
    WHERE ID=125
person msi77    schedule 28.12.2013