我有两个表,链接和命中。Hit 表包含有关来自 Link 的链接何时被点击的信息。Link 表包含一个 HitsCount 列,其中包含每个链接被点击的次数。我们定期将 Hit 的数据汇总为每小时点击的数据聚合,并删除聚合数据以节省空间。当我们聚合时,我们还想用我们正在聚合的当前小时的链接的 COUNT() 更新 Link.HitsCount。这是怎么做到的?
这是我目前的尝试,使用 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 。我曾考虑使用 LinkId 和 COUNT() 删除并填充临时表,但我宁愿避免这种情况。另一方面,我也宁愿避免使用 CURSOR。
非常感谢。
弥敦道