2

私の SQL Server には、大量のデータを含むテーブルがあります。年 (smallint) と月 (tinyint) の 2 つの列があります。

過去 X か月のデータを分離するための最善かつ最も実行された方法は何ですか?

変数を宣言しました

  • @YearFrom
  • @YearTo
  • @MonthFrom
  • @MonthTo

正しい値で。ここで、WHERE ステートメントが期待どおりに機能しないことに気付きました。

WHERE (year >= @yearfrom AND month >= @monthfrom) 
AND (year <= @yearto AND month <= @monthto)

過去 12 か月のデータを選択すると、私の変数は

  • @YearFrom = 2012
  • @YearTo = 2013
  • @MonthFrom = 9
  • @MonthTo = 9

そしてSELECTは2012/2013年9月からのデータを私に与えるだけです

WHERE (year >= 2012 AND month >= 9) 
AND (year <= 2013 AND month <= 9)

したがって、実際には、問題を解決するための 2 つの可能性があります。

  • 最初に先月の変数 X を使用 @lastMonth = 12
  • または、私が宣言した 4 つのヘルパー変数 (yearfrom、yearto、monthfrom、monthto) を使用します。

この問題を解決する方法はありますか?!?!?

いつも返信ありがとうございます...

4

1 に答える 1

1
WHERE (year = @yearfrom AND month >= @monthfrom or year > @yearfrom) 
AND (year = @yearto AND month <= @monthto or year < @yearto)
于 2013-09-24T09:45:13.707 に答える