null を返すことができる TSQL SELECT があります。ISNULL を使用して 0 に置き換えようとしましたが、何らかの理由で機能しません。選択元のテーブルには、次の列があります。
- storeID --> int
- ペナルティパーセント --> decimal(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