【发布时间】:2020-07-08 20:39:06
【问题描述】:
我在 SQL Server 中有一个维度表,它以以下格式存储具有更改历史记录的值:
[Position_History]
Position Person Inserted Deleted
Sales 1 Mark 2019-01-01 2019-02-01
Sales 2 Mark 2019-02-01 2019-05-01
Sales 3 Mark 2019-05-01 2020-07-01
Senior Developer Peter 2019-01-01 2020-07-01
Junior Developer John 2019-01-01 2019-04-01
Project Manager John 2019-04-01 2020-07-01
插入 = 记录插入日期。
已删除 = 记录更新日期。
当查询特定日期的职位状态时,一个简单的 where 查询就足够了:
SELECT Position, Person FROM Position_History WHERE Inserted <= '2019-05-01' AND Deleted > '2019-05-01'
With result:
Position Person
Sales 3 Mark
Senior Developer Peter
Project Manager John
但是,我不知道使用哪种方法来创建一个可以返回日期列表结果的查询。例如,我想知道连续 3 个月的状态 - '2019-03-01'、'2019-04-01'、'2019-05-01'
我正在寻找的结果是:
Position Person Date
Sales 2 Mark 2019-03-01
Senior Developer Peter 2019-03-01
Junior Developer John 2019-03-01
Sales 2 Mark 2019-04-01
Senior Developer Peter 2019-04-01
Project Manager John 2019-04-01
Sales 3 Mark 2019-05-01
Senior Developer Peter 2019-05-01
Project Manager John 2019-05-01
我正在寻找能够动态接受参数作为参数列表或表的方法,避免对 x 查询进行硬编码联合。
感谢您的帮助!
【问题讨论】:
-
您想要只在这三个日期的比赛状态,还是包括这两个日期之间每个日期的所有变化?
标签: sql sql-server