リンクとヒットの 2 つのテーブルがあります。Hit テーブルには、Link からのリンクがいつヒットしたかに関する情報が含まれています。Link テーブルには、各リンクがヒットした回数を示す列 HitsCount が含まれています。定期的にヒットのデータを 1 時間ごとのヒット データの集計に集計し、集計されたデータを削除してスペースを節約します。集計するときに、Link.HitsCount を、集計している現在の時間のリンクの COUNT() で更新することも必要です。これはどのように行われますか?
T-SQLを使用した私の現在の試みは次のとおりです。
DECLARE cc CURSOR LOCAL FOR
SELECT COUNT(*) AS c, h.LinkId AS id
FROM Hit AS h
WHERE h.[Timestamp] >= @p_startTime AND h.[Timestamp] < @p_endHour
GROUP BY h.LinkId
OPEN cc
FETCH cc
UPDATELink
SET Link.HitsCount = HitsCount + c
FROM Link
WHERE CURRENT OF cc
CLOSE cc
DEALLOCATE cc
ただし、「列名 'c' が無効です」というエラーが表示されます。また、このアプローチは、本来のように h.LinkId と Link.LinkId で JOIN しません。スクラッチ テーブルに LinkId と COUNT() をドロップして入力することを考えましたが、これは避けたいと思います。一方で、CURSOR も避けたいと思います。
どうもありがとう。
ネイサン