基于常规 table 和来自另一个临时 table 的几列创建临时 table 并循环数据
Creating a temp table based on a regular table and a few columns from another temp table and looping the data
我有一个名为 #tmpFrames 的临时文件 table,其输出如下:
Frameid
Start_Day
End_Day
1
2021-09-01 18:00:00.000
2021-09-02 06:00:00.000
2
2021-09-02 18:00:00.000
2021-09-03 06:00:00.000
3
2021-09-03 18:00:00.000
2021-09-04 06:00:00.000
4
2021-09-04 18:00:00.000
2021-09-05 06:00:00.000
5
2021-09-05 18:00:00.000
2021-09-06 06:00:00.000
6
2021-09-06 18:00:00.000
2021-09-07 06:00:00.000
7
2021-09-07 18:00:00.000
2021-09-08 06:00:00.000
8
2021-09-08 18:00:00.000
2021-09-09 06:00:00.000
9
2021-09-09 18:00:00.000
2021-09-10 06:00:00.000
此外,还有一个名为 Audit 的 table,如下所示:
ID
Record
AccessedDTTM
16
Sign In
2021-09-02 18:31:33.798
16
Charge
2021-09-02 21:41:33.770
16
Session End - Sign Out
2021-09-02 04:42:33.770
16
Sign In
2021-09-07 19:41:33.770
16
Session End - Sign Out
2021-09-07 04:42:33.770
17
Sign In
2021-09-01 00:03:04.070
17
Session End - Sign Out
2021-09-01 00:33:52.717
18
Sign In
2021-09-06 01:31:00.527
18
Schedule
2021-09-06 01:31:31.407
18
Charge
2021-09-06 01:43:27.427
18
Session End - Sign Out
2021-09-06 01:47:27.940
我需要创建另一个临时文件 table,它将根据临时文件中提到的每个 start_day 和 end_day 时间范围从审计 table 中检索数据table 并添加 start_day 和 end_day 列。例如:
我希望获得审计 table 中所有数据的如下数据,并合并来自临时 Table 的数据以及每个时间范围的数据:
ID
AccessedDTTM
Start_day
End_Day
FrameId
16
2021-09-02 18:31:33.798
2021-09-02 18:00:00.000
2021-09-03 06:00:00.000
2
16
2021-09-02 21:41:33.770
2021-09-02 18:00:00.000
2021-09-03 06:00:00.000
2
16
2021-09-02 04:42:33.770
2021-09-02 18:00:00.000
2021-09-03 06:00:00.000
2
有什么实现方法的建议吗?非常感谢您的帮助。提前致谢!
我讨厌这种加入方式,但它会完成工作。
SELECT
tf.ID
, tf.AccessedDTTM
, a.Start_Day
, a.End_Day
FROM
[Audit] a
INNER JOIN #tmpFrames tf ON a.AccessedDTTM>=tf.Start_Day
AND a.AccessedDTTM<=tf.End_Day
我有一个名为 #tmpFrames 的临时文件 table,其输出如下:
Frameid | Start_Day | End_Day |
---|---|---|
1 | 2021-09-01 18:00:00.000 | 2021-09-02 06:00:00.000 |
2 | 2021-09-02 18:00:00.000 | 2021-09-03 06:00:00.000 |
3 | 2021-09-03 18:00:00.000 | 2021-09-04 06:00:00.000 |
4 | 2021-09-04 18:00:00.000 | 2021-09-05 06:00:00.000 |
5 | 2021-09-05 18:00:00.000 | 2021-09-06 06:00:00.000 |
6 | 2021-09-06 18:00:00.000 | 2021-09-07 06:00:00.000 |
7 | 2021-09-07 18:00:00.000 | 2021-09-08 06:00:00.000 |
8 | 2021-09-08 18:00:00.000 | 2021-09-09 06:00:00.000 |
9 | 2021-09-09 18:00:00.000 | 2021-09-10 06:00:00.000 |
此外,还有一个名为 Audit 的 table,如下所示:
ID | Record | AccessedDTTM |
---|---|---|
16 | Sign In | 2021-09-02 18:31:33.798 |
16 | Charge | 2021-09-02 21:41:33.770 |
16 | Session End - Sign Out | 2021-09-02 04:42:33.770 |
16 | Sign In | 2021-09-07 19:41:33.770 |
16 | Session End - Sign Out | 2021-09-07 04:42:33.770 |
17 | Sign In | 2021-09-01 00:03:04.070 |
17 | Session End - Sign Out | 2021-09-01 00:33:52.717 |
18 | Sign In | 2021-09-06 01:31:00.527 |
18 | Schedule | 2021-09-06 01:31:31.407 |
18 | Charge | 2021-09-06 01:43:27.427 |
18 | Session End - Sign Out | 2021-09-06 01:47:27.940 |
我需要创建另一个临时文件 table,它将根据临时文件中提到的每个 start_day 和 end_day 时间范围从审计 table 中检索数据table 并添加 start_day 和 end_day 列。例如:
我希望获得审计 table 中所有数据的如下数据,并合并来自临时 Table 的数据以及每个时间范围的数据:
ID | AccessedDTTM | Start_day | End_Day | FrameId |
---|---|---|---|---|
16 | 2021-09-02 18:31:33.798 | 2021-09-02 18:00:00.000 | 2021-09-03 06:00:00.000 | 2 |
16 | 2021-09-02 21:41:33.770 | 2021-09-02 18:00:00.000 | 2021-09-03 06:00:00.000 | 2 |
16 | 2021-09-02 04:42:33.770 | 2021-09-02 18:00:00.000 | 2021-09-03 06:00:00.000 | 2 |
有什么实现方法的建议吗?非常感谢您的帮助。提前致谢!
我讨厌这种加入方式,但它会完成工作。
SELECT
tf.ID
, tf.AccessedDTTM
, a.Start_Day
, a.End_Day
FROM
[Audit] a
INNER JOIN #tmpFrames tf ON a.AccessedDTTM>=tf.Start_Day
AND a.AccessedDTTM<=tf.End_Day