我有一个可以返回空值的 TSQL SELECT。我尝试使用 ISNULL 将其替换为 0 但由于某种原因它不起作用。从中选择的表具有以下列:
- storeID --> int
- 惩罚百分比->小数(9,2)
- 惩罚日期 --> 日期时间
SELECT ISNULL(penaltyPercent, 0.0) AS penaltyPercent
FROM dbo.Penalty
WHERE (penaltyDate = (SELECT MAX(penaltyDate) AS date
FROM dbo.Penalty AS Penalty_1
WHERE (penaltyDate <= @date) AND (storeID = @storeID))) AND
(storeID = @storeID)
当日期在第一个惩罚日期之前(应该有 0 惩罚),不返回结果。不知道为什么这不起作用。我有一个解决方法,但它困扰着我。
以下是正在使用的数据示例:
storeID penaltyDate penaltyPercent
182 10/1/2008 12:00:00 AM 0.020000
182 11/1/2008 12:00:00 AM 0.040000
182 12/1/2008 12:00:00 AM 0.070000