SELECT (CASE FDiscountType
WHEN 1 THEN ISNULL(fn_discount.FDiscountPercent, 1) * fn_income.FAmt - ISNULL(fn_discount.FDiscountAmt, 0)
WHEN 2 THEN fn_income.FAmt - ISNULL(fn_discount.FDiscountAmt, 0)
END) AS amt,
cs_courseGroups.FID, cs_courseGroups.FName, fn_income.FAmt
FROM cs_courseGroups INNER JOIN
fn_income ON cs_courseGroups.FID = fn_income.FID LEFT OUTER JOIN
fn_discount ON cs_courseGroups.FID = fn_discount.FID
WHERE ({ fn NOW() } >= fn_discount.FStartDatetime) AND ({ fn NOW() } <= fn_discount.FEndDatetime)
isnull ([字段],默认值) 如果为空返回的就是默认值

本文介绍了一种SQL查询技巧,通过CASE WHEN语句结合联表查询实现课程组收入和折扣金额的计算。该方法根据不同的折扣类型计算实际支付金额,并展示了如何使用ISNULL处理空值情况。
1591

被折叠的 条评论
为什么被折叠?



