我有以下数据:
ID Date interval interval_date tot_activity non-activity
22190 2011-09-27 00:00:00 1000 2011-09-27 10:00:00.000 265 15
我有另一个包含此数据的表格:
Date ID Start END sched_non_activity non_activity
10/3/2011 12:00:00 AM HBLV-22267 10/3/2011 2:02:00 PM 10/3/2011 2:11:00 PM 540
现在,在第二个表的non_activity字段中,我希望这是第一个表中的值。但是,我需要捕获tot_activity - non_activity,其中第一个表中的间隔(以15分钟为增量)落在与第二个表的开始和结束相同的时间范围内。
我已经尝试过设置变量并设置一个循环,其中每行按间隔验证启动时间,但我不知道如何只返回一个只有一条记录的变量,因为我不断收到错误,我的变量太多了结果
我试过到处寻找教程,我找不到任何可以帮助我的东西。任何人都有关于他们可以分享的循环的指针或教程吗?
答案 0 :(得分:2)
你需要以某种方式生成间隔结束日期;我假设第一个表中总有一条记录,间隔记录为15分钟。在这种情况下,示例如下所示:
;WITH Intervals
AS
(SELECT
Interval_date
,DATEADD(ms,840997,Interval_date) AS interval_end
,nonactivity
FROM A)
--Select query for Validation
--SELECT
-- b.[Date]
-- ,b.ID
-- ,b.Start
-- ,b.sched_non_activity
-- ,i.nonactivity
--FROM B
--JOIN Intervals AS i
--ON b.Start >= i.Interval_date
--AND b.[END] <= i.interval_end
UPDATE B
SET non_activity = i.nonactivity
FROM B
JOIN Intervals AS i
ON b.Start >= i.Interval_date
AND b.[END] <= i.interval_end
显然,您可能需要根据具体情况进行调整。