会計年度の月をループし、各月のアイテムをカウントするストアド プロシージャがあります。176 個のアイテムがあることはわかっていますが、これを実行すると合計 182 が返されます。@EndDate から 1 秒を削除しようとしましたが、合計カウントは 165 でした。つまり、アイテムを 2 回カウントするか、またはそれらすべてを数えていません。ここで私が間違っていることを誰かが助けることができますか? 以下は、私がやっていることの簡略化されたバージョンです:
DECLARE @Date DATETIME
DECLARE @EndDate DATETIME
SELECT @Date = CAST((@Year - 1) as VARCHAR) + '-07-01'
SELECT @EndDate = DATEADD(Month, 1, @Date)
DECLARE @Count INT
SELECT @Count = 0
WHILE @Count < 12
BEGIN
SELECT
COUNT(yai.ID)
FROM
table_1 yai
INNER JOIN table_2 yat ON yai.ID = yat.ID
WHERE
(yat.Date_Received BETWEEN CONVERT(VARCHAR, @Date, 101) AND CONVERT(VARCHAR, @EndDate, 101)) AND
yai.Pro_Type = @Value AND yat.Type = 'PC'
SELECT @Count = @Count + 1
SELECT @Date = DATEADD(MONTH, 1, @Date)
SELECT @EndDate = DATEADD(MONTH, 1, @EndDate)
END