0

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  
4

3 に答える 3