我有以下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
答案 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并且什么都不做。