假设我有两个表,两个表都包含一个日期列,例如
OUTTime
12:05:40
12:08:30
12:20:40
和其他表由
组成INTime
12:10:35
12:12:23
12:16:40
12:30:11
现在我想要两个表之间的最小时差的行,如12:08:30和12:10:35给我OUT和IN。同样地,12:20:40和12:30:11通过消除OUTTime 12:05:40并从INTime消除12:12:35和12:16:40给了我另一排,这给了我正确的OUtTime和InTime
有关如何循环获取此数据的任何建议吗?
答案 0 :(得分:0)
如果你联合两个表......就像
选择时间' IN' 来自InTimesTable 联盟 选择时间,'输出' 来自OutTimesTable 按时间排序
您可以将其转储到Excel中,并手动操作。
或者,您可以在此填写您的问题,并获得更好的答案。
答案 1 :(得分:0)
如果你想得到匹配的InTimes和OutTimes并且只得到最接近的,试试这个:
设置
CREATE TABLE #OUTTime
(
[Time] Time
)
INSERT INTO #OUTTime
VALUES
('12:05:40'),
('12:08:30'),
('12:20:40')
CREATE TABLE #InTime
(
[Time] Time
)
INSERT INTO #InTime
VALUES
('12:10:35'),
('12:12:23'),
('12:16:40'),
('12:30:11')
现在查询:
;WITH CTE
As
(
SELECT O.Time AS outTime, (SELECT MIN([Time]) FROM #InTime I WHERE I.[time] > O.[Time]) AS InTime
FROM #OUTTime O
)
SELECT MAX(OutTime) As OutTime, InTime
FROM CTE
GROUP BY InTime
<强>结果
OutTime InTime
12:08:30.0000000 12:10:35.0000000
12:20:40.0000000 12:30:11.0000000