我有一个数据库用于跟踪物理对象的位置,我们称之为小部件。它有一个审计追踪表,追踪widget何时放入某个位置,以及何时离开某个位置(以及之后的位置)。SQL查询将审计线索的输入/输出时间转换为位置列表
所以在概念上,它看起来像这样
Widget ID Date Old Location New Location
1 01-Oct-2013 NULL 101
1 03-Oct-2013 101 108
1 08-Oct-2013 108 101
2 01-oct-2013 NULL 101
2 02-Oct-2013 101 103
3 12-oct-2013 NULL 101
我希望能够查询列表,它的部件是在开始和结束日期之间的位置101,如十月8日至9日到2013年,这应该是小部件1而不是小部件2或3.
我不知道如何获取所有这些情况。我可以提取最后移入的小部件列表,以及在开始之前移出的小部件列表,但这也会消除小部件1在离开和返回时的状态。
我想我需要将它转换为一个表格,包含窗口小部件,位置,入口日期和退出日期,但我不知道该怎么做?
编辑:正如指出的,我的数据是错误的,我已经更新,使问题8日至9日(这是第4至第5)。所以Widget 1是该时期101位置中唯一的小部件。
你想知道小部件进来或期末留? – LINQ2Vodka
我想知道在期间 – PaulHurleyuk
期间任何时候小部件是否在位置。因此,您需要找到至少1条记录,其中新位置是101并且日期在周期内 - 用于每个小部件ID。请在我的答案中检查更新。 – LINQ2Vodka