0

这就是我想要做的。基本上我有一些列故意在表中留空,Staging_X稍后更新。我想使用以下case条件更新这些列。我想在存储过程中实现这一点。

UPDATE Staging_X 
   SET Staging_X.[NoMaterial]
      (SELECT (case 
                 when ((([Up]+[Test])+[Mon])+[Down_percentage])*(1.68)=(0) 
                 then (168) else [Lost]*(1.68) 
               end) 
         FROM Staging_X)
4

3 回答 3

5
UPDATE Staging_X 
SET [NoMaterial] = 
    case when [Up]+[Test]+[Mon]+[Down_percentage]=0 
    then 168 else [Lost]*1.68 end
WHERE [NoMaterial] is null
于 2013-08-16T11:20:04.827 回答
3

如果我理解正确,您不需要像这样选择,因为这些值都在同一行中。

所以尝试类似的东西

UPDATE  Staging_X 
SET     Staging_X.[NoMaterial] = 
        case 
            when ((([Up]+[Test])+[Mon])+[Down_percentage])*(1.68)=(0) 
                then (168) 
            else [Lost]*(1.68) 
        end
于 2013-08-16T11:20:52.827 回答
3

更简单

UPDATE [Staging_X] 
    SET [NoMaterial] =
        CASE [Up]+[Test]+[Mon]+[Down_percentage]
             WHEN 0 THEN 168
             ELSE [Lost] * 1.68 
        END
于 2013-08-16T11:25:41.413 回答