我需要检查3000万条记录(一个月价值)的每日票证验证(Unix日期时间),并将它们分成24个一小时的时间段,用于211个站点.
首先,我创建了一个视图,选择我正在寻找的月份(以及设备类型),然后为每个Unix日期时间创建一个Windows Datetime值.
SELECT TOP (100) PERCENT StationName AS Station, MainTable.UnixDateTime AS ValTime,
DATEADD(s, MainTable.UnixDateTime, CONVERT(DATETIME, '1970-01-01 00:00:00', 102)) AS WinTime
FROM MainTable
INNER JOIN StationName ON MainTable.StationID = StationName.StationID
WHERE (StationName.ValidStationCode = 32767) [use only valid stations]
AND (MainTable. UnixDateTime >= 1264996800)
AND (MainTable. UnixDateTime < 1267416000)
AND (MainTable.EquipmentCode IN (33, 36)) [examine only this equipment]
ORDER BY Station
Run Code Online (Sandbox Code Playgroud)
然后,我运行主程序,对于每个一小时的时段,在该视图上使用select语句.这是211个站中每个站的24个选择语句.
例1)
Update table Set [0102]= (select count(ValTime)
from view
where Station = @thisStation and DatePart (Hour, WinTime)>= 1 and …Run Code Online (Sandbox Code Playgroud)