0

我有一个应用程序,它每小时在 MS SQL 数据库中输入一个条目。2 月 12 日的最后一个条目是零值,并显示在我的每周报告中。

我想要做的是从先前的计数中获取值并输入字段而不是零值。

有人可以就如何做到这一点提供一些建议,因为它超出了我的 TSQL 技能吗?

SELECT * FROM [dbo].[CountDetails]
WHERE [updateTime] < '2013-02.13'
AND [updateTime] > '2013-02.12'
AND ( DATEPART(hh,[updateTime])= '22' OR DATEPART(hh,[updateTime])= '23' )

查询的 SQL 结果

注意:应用程序应该在午夜将计数归零,但在 2 月 12 日它发生得早,我知道为什么。

编辑:总共有 5 个 IP 地址和 6 个计数器,因为 192.168.168.11 有 2 个计数器。所以 2111 到 2116 是 22:58 时所有可用计数器的完整条目,而 2117 到 2122 是 23:58 时所有可用计数器的完整条目。我需要用 22:58 的相应值替换 23:58 值。

4

1 回答 1

0

在这里猜测,但更新加入ipAddress,counterNumberdatetime不包括小数秒,间隔一个小时(SELECT为了安全起见,先做部分):

UPDATE b
SET count = a.count
-- SELECT *
FROM dbo.CountDetails a
JOIN dbo.CountDetails b ON a.ipAddress = b.ipAddress AND a.counterNumber = b.counterNumber
AND CONVERT(VARCHAR(20),b.updateTime,120) = CONVERT(VARCHAR(20),DATEADD(HOUR,1,a.updateTime),120)
于 2013-02-17T17:37:20.410 回答