問題:
嗨,我有與歷史數據的表從一堆傳感器,而我試圖讓一排各個歷史數據在時間上最接近所需的時間。例如,我想獲得最接近每分鐘的記錄。獲取行時最接近的時間爲每行中的另一個表
我簡化了問題;下面,如果我能解決我可以用它來通知我的一般解決方案:
以兩個表如下:
CREATE TABLE [TempDataTable](
[DataIndex] [int] IDENTITY(0,2) NOT NULL,
[DataName] [varchar](40) NOT NULL,
[DataValue] [decimal](10,2) NOT NULL,
[DataTimeStamp] [datetime2](7)
)
CREATE TABLE [TempTargetTable](
[TargetIndex] [int] IDENTITY(1,2) NOT NULL,
[TargetTime] [datetime2](7)
)
對於每一行TempTargetTable
,得到TempDataTable
行與TempDataTable.DataTimeStamp
最接近TempTargetTable.TargetTime
如果我能做到這一點,我相信我可以找出休息,但是我對如何讓這第一步工作感到茫然。爲了便於測試你的代碼,我可以提供一些測試數據填充兩個表如下:
有用的測試數據:
INSERT INTO [TempDataTable]
([DataName],
[DataValue],
[DataTimeStamp])
VALUES
('Sensor',0, '2017-01-01 00:00:00'),
('Sensor',0.5, '2017-01-01 00:00:17'),
('Sensor',1, '2017-01-01 00:01:03'),
('Sensor',1.5, '2017-01-01 00:01:30'),
('Sensor',1.5, '2017-01-01 00:01:38'),
('Sensor',2, '2017-01-01 00:02:01'),
('Sensor',2.5, '2017-01-01 00:02:15'),
('Sensor',3, '2017-01-01 00:02:56'),
('Sensor',3.5, '2017-01-01 00:03:27'),
('Sensor',4, '2017-01-01 00:04:01'),
('Sensor',5, '2017-01-01 00:05:00'),
('Sensor',5.5, '2017-01-01 00:05:15'),
('Sensor',5.5, '2017-01-01 00:05:46'),
('Sensor',6, '2017-01-01 00:06:10'),
('Sensor',7, '2017-01-01 00:06:57'),
('Sensor',7.5, '2017-01-01 00:07:13'),
('Sensor',8, '2017-01-01 00:08:01'),
('Sensor',9, '2017-01-01 00:09:03')
INSERT INTO [TempTargetTable]
([TargetTime])
VALUES
('2017-01-01 00:00:00'),
('2017-01-01 00:01:00'),
('2017-01-01 00:02:00'),
('2017-01-01 00:03:00'),
('2017-01-01 00:04:00'),
('2017-01-01 00:05:00'),
('2017-01-01 00:06:00'),
('2017-01-01 00:07:00'),
('2017-01-01 00:08:00'),
('2017-01-01 00:09:00')
我將創建此自定義函數,如getSensorByTime(時間)在這個函數中,計算值的時間之間的diff文件,命令的diff ASC和限制1. – ARS81