0
我很努力尋找最佳方式來從多個列和行中獲得最接近的值。在下面的代碼中,我只能得到StartDate
中的SEQ
號碼,但我還需要知道第1行的EndDate
與@ValidationTime
相比是否比起始日期更近。SQL Server 2012:找到最近的日期,多列和行
例如,如果@Validationtime
是10:10,第1行是最接近的值,但10:20更接近第2行。
最後,我將只處理「最接近的時隙」(1行)。
我希望我能以不太雜亂的方式解釋它。 :)
DECLARE @ValidationTime as datetime
SET @ValidationTime = '2017-08-29 10:10:00.000'
--SET @ValidationTime = '2017-08-29 10:20:00.000'
DECLARE @table TABLE (ID INT, StartDate datetime, EndDate datetime);
INSERT INTO @table
VALUES (1, '2017-08-29 08:00:00.000', '2017-08-29 10:00:00.000'),
(1, '2017-08-29 10:30:00.000', '2017-08-29 21:00:00.000'),
(1, '2017-08-30 08:00:00.000', '2017-08-30 10:00:00.000'),
(1, '2017-08-30 19:00:00.000', '2017-08-30 21:00:00.000');
SELECT
ID, StartDate, EndDate,
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY ABS(DATEDIFF(MINUTE, StartDate, @ValidationTime))) AS SEQ
FROM
@table
是的,當然!案件!我爲什麼沒有想到這一點。謝謝! – Andreas