1

テーブル内のレコード数の毎日の統計を保持する必要があります。

毎日のレコードのカウントと結果の別のテーブルへの書き込みを自動化する方法はありますか? たぶん、SQL Agent Job などを使用していますか?

SQL Server 2008 を使用しています。

ありがとうございました!

編集: 2010 年 1 月 1 日からのすべてのレコードを今日削除した場合、統計は、2010 年 1 月 1 日の時点で 500 レコードがあったことを示す必要があります。したがって、GetDate() のみを使用して合計しても機能しません。2010 年 1 月 1 日にそのメソッドで 0 レコードが取得されるためです。

4

5 に答える 5

2

次のようにテーブルに列を追加します。

ALTER TABLE My_Table
ADD insert_date DATETIME NOT NULL DEFAULT GETDATE()

その後、SQL が意図したとおりにそれに対してクエリを実行できます。

于 2010-07-29T19:31:01.577 に答える
2

トリガーの挿入: 今日のカウント テーブル レコードの更新 (まだ作成されていない場合は挿入)
トリガーの削除: 今日のカウント テーブル レコードの減少 (まだ作成されていない場合は挿入)

于 2010-07-29T19:36:27.260 に答える
1

私の意見では、あなたは最良の選択肢であなた自身の質問に答えました。カウントを取得してスタンプするストアド プロシージャを呼び出すだけのジョブを作成します。

Tom H.が言及した他のオプションはより良い選択ですが、何らかの理由でテーブルを変更できない場合は、ジョブが良いオプションです。

別のオプションは、そのテーブルに挿入トリガーを配置して、どこかでカウントをインクリメントすることですが、実装方法によってはパフォーマンスに影響を与える可能性があります。

ジョブの設定は、実行頻度と呼び出すストアド プロシージャのスケジュールを使用して、SQL Management Studio インターフェイスを使用して簡単に行うことができます。sp を呼び出す代わりに、ステップのコマンド ウィンドウにコマンドを直接書き込むこともできます。

于 2010-07-29T19:34:54.940 に答える
1

削除ではなく廃棄に関する OMG_Ponies の補遺に関する Tom の回答が最良の回答です。特定の日にテーブルに含まれていたレコードの数が気になる場合、ある日誰かがその日のそれらのレコードに関する情報を要求する可能性が高くなります。

それがうまくいかない場合は、他の人が言ったように、その日の最後のレコードの PK のフィールドを持つ 2 番目のテーブルを作成し、その日をカウントしてから、毎日の終わりに実行されるジョブを作成しますOrginalTable.PK > MAX(NewCountTable.Last_PK_Field) のすべてのレコードをカウントし、その行 (Last_PK_Field, Count) を NewCountTable に追加します。

于 2010-07-29T19:45:09.287 に答える
0

SQL ジョブは良いです -- はい。

または、GETDATE() にデフォルト設定されたテーブルに日付列を追加することもできます。これは、事後にレコードを削除する人々によって毎日のカウントが影響を受けないようにする場合には機能しません。

于 2010-07-29T19:31:41.180 に答える