基于项目状态变迁历史表的SQL查询技术咨询
项目开发状态变迁历史表解析
我猜你是要把这个记录项目状态流转的数据库表内容整理得更清晰,方便后续做状态时长统计或者流程分析吧?先给你把核心内容整理好:
1. 历史表结构与示例数据
表名:dbo.history_table
该表用于记录项目进入各开发状态的时间戳,示例数据如下:
| ProjectID | State | Timestamp |
|---|---|---|
| 1 | 1 | 2018-03-22 10:38:27.000 |
| 1 | 2 | 2018-03-23 10:22:56.000 |
| 1 | 3 | 2018-03-24 12:18:32.000 |
| 2 | 1 | 2018-03-24 11:01:17.000 |
| 1 | 4 | 2018-03-25 10:32:41.000 |
| 2 | 4 | 2018-03-26 12:39:03.000 |
2. 状态定义格式说明
对应上述State字段的具体含义,通常会有配套的状态描述表,格式如下:
| State # | 描述内容 |
|---|---|
| 示例1 | 比如“需求确认完成” |
| 示例2 | 比如“开发阶段启动” |
| ... | ... |
如果后续你需要计算每个项目在各状态的停留时长,或者找出状态流转异常的项目,可以基于这个表写SQL查询——比如用窗口函数LAG()来获取上一个状态的时间戳,进而计算间隔。举个简单的示例:
SELECT ProjectID, State, Timestamp AS CurrentStateTime, LAG(Timestamp) OVER (PARTITION BY ProjectID ORDER BY Timestamp) AS PreviousStateTime, DATEDIFF(minute, LAG(Timestamp) OVER (PARTITION BY ProjectID ORDER BY Timestamp), Timestamp) AS StateDurationMinutes FROM dbo.history_table ORDER BY ProjectID, Timestamp;
这个查询能帮你直接算出每个项目从上个状态到当前状态的停留分钟数,应该能解决不少常见的分析需求。
内容的提问来源于stack exchange,提问作者Sparrower
相关产品推荐
相关产品推荐

