我有一个存储过程如下:
SELECT DiscountId
,Discount1
,Discount2
,Discount3
FROM PriceDiscount
这可以返回0或一行或多行。 我需要检查Discount1,Discount2和Discount3的总和。如果任何行的总和大于0 ,我想设置一个字段isDiscounted = true并返回它。 例如,以下内容将返回isDiscounted = true,因为其中一行的总数大于0。
Discount1 Discount2 Discount3 TotalDiscount
34.00 0.00 0.00 34.00
0.00 0.00 0.00 0.00
0.00 0.00 0.00 0.00
我不想在代码中检查这个或为此创建另一个存储过程。 我可以添加另一个聚合如下的列:
SELECT DiscountId
,Discount1
,Discount2
,Discount3
,(Discount1+Discount2+Discount3) as TotalDiscount
FROM PriceDiscount
现在我应该如何检查其中一个TotalDiscount是否> 0并将isDiscounted返回为true还是false?
答案 0 :(得分:0)
听起来你想要一个案例陈述。添加此字段:
,CASE WHEN (Discount1+Discount2+Discount3) > 0 THEN 1 ELSE 0 END AS isDiscounted
答案 1 :(得分:0)
此版本适用于所有行。
<强> SQL Fiddle Demo 强>
SELECT CASE
WHEN SUM(Discount1) + SUM(Discount2) + SUM(Discount3) > 0 THEN 1
ELSE 0
END as isDiscount
FROM PriceDiscount;