TSQL语法,替换现有的"错误的值"以前的#34;正确的价值"

时间:2013-02-17 16:36:46

标签: tsql

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

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

有人可以提供一些关于如何做到这一点的建议,因为它超出了我的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 Results from query

注意:应用程序应该将计数归零午夜,但是在12日FEB它发生得很早,我知道原因。

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

1 个答案:

答案 0 :(得分:0)

在此猜测,但加入ipAddresscounterNumberdatetime不包括小数秒的更新,以小时为单位(首先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)