在SQL Server中更新表数据

时间:2017-08-15 16:20:44

标签: sql sql-server sql-server-2008

我有以下SQL语句。我想要做的是根据条件添加两个值。因此,如果strSheetName为1,那么我应该得到75 * 70,但如果@IsUCMPresent也存在,我应该得到(75 * 70)+(75 * 8)

@IsEVMPresent

问题是如果 SET @IsEVMPresent = 1 SET @IsUCMPresent = 1 UPDATE #MainData SET OneTimeExpense = (CASE WHEN @IsUCMPresent = 1 THEN 75 * 70 END) + (CASE WHEN @IsEVMPresent = 1 THEN 75 * 8 END) WHERE ItemId = 'ECS' OR ItemId = 'UCM' 为真,那么我得到的总和就好了,但如果只有@IsUCMPresent = 1是真的那么我就得不到75 * 8

2 个答案:

答案 0 :(得分:2)

您需要在case语句中添加else子句:

UPDATE #MainData
    SET   
    OneTimeExpense  = (Case When @IsUCMPresent = 1  Then 75 * 70 Else 0 End) +
                      (Case When @IsEVMPresent = 1  Then 75 * 8  Else 0 End)
Where ItemId IN('ECS','UCM')

如果没有它们,它将返回null并且Sql不能添加数字和null。

答案 1 :(得分:2)

在两个CASE中你都应该指定ELSE 0,否则CASE会给你NULL并且什么都不做。