0

四半期ごとのエントリを合計する明細書があります。

BEGIN
SET @mth = DATEPART(MONTH, GETDATE())
IF @mth BETWEEN '1' AND '3'
-- SELECT-Statement
ELSE IF @mth BETWEEN '4' AND '6'
-- SELECT-Statement
ELSE IF @mth BETWEEN '7' AND '9'
-- SELECT-Statement
ELSE IF @mth BETWEEN '10' AND '12'
-- SELECT-Statement
END

昨日まで Select-Statement は正常に機能し、必要なものを合計していましたが、今日は機能しなくなりました。selectステートメントを個別に疲れさせましたが、動作して正しい結果が得られました。また、'10' AND '12' の行で "ELSE IF @mth BETWEEN '10' AND '12'" を "ELSE" に変更しようとしましたが、だめでした。最後の選択ステートメントの前にブレークポイントを設定しても、デバッガーは停止しません。誰でも問題がどこにあるのか考えていますか?

4

3 に答える 3

2

問題を引き起こす可能性があるため、おそらく@mth変数を宣言したと思います。varcharとして宣言するとint、期待どおりの結果が得られます。

BEGIN
DECLARE @mth int
SET @mth = DATEPART(MONTH, GETDATE())
IF @mth BETWEEN '1' AND '3'
print '1'
-- SELECT-Statement
ELSE IF @mth BETWEEN '4' AND '6'
print '2'
-- SELECT-Statement
ELSE IF @mth BETWEEN '7' AND '9'
print '3'
-- SELECT-Statement
ELSE IF @mth BETWEEN '10' AND '12'
print '4'
-- SELECT-Statement
END
于 2013-10-01T07:24:46.450 に答える
0

これはあなたがそれを解決する方法です:

DECLARE @from datetime 
SET @from = dateadd(month, datediff(month, 0, current_timestamp)/3*3, 0)
-- SELECT-Statement....
-- WHERE datefield >= @from
-- AND datefield < dateadd(month, 3, @from)
于 2013-10-01T07:58:07.353 に答える