【发布时间】:2020-09-03 19:00:46
【问题描述】:
我现在正在处理机器计划项目。我有创建用于记录机器状态的表。在这张表中,我记录了开始和结束状态。现在,如果我输入某个时期之间的日期,我想按该表创建报告。这是我想要的表格和预期结果。
源表:
machineid | starttime | endtime | status |
-----------+---------------------+---------------------+---------+
M1 | 2020-01-01 00:00:00 | 2020-01-04 17:00:00 | running |
M1 | 2020-01-04 17:00:00 | 2020-01-04 18:00:00 | down |
M1 | 2020-01-04 18:00:00 | 2020-01-05 14:00:00 | idle |
M2 | 2020-01-01 00:00:00 | 2020-01-05 09:00:00 | running |
M2 | 2020-01-05 09:00:00 | 2020-01-05 18:00:00 | idle |
预期结果:
输入开始日期报告:2020-01-01 00:00:00 和 输入结束日期报告:2020-01-05 23:59:59
machineid | date | running | idle | down | total |
----------+------------+---------+------+------+-------+
M1 | 2020-01-01 | 24 | 0 | 0 | 24 |
M1 | 2020-01-02 | 24 | 0 | 0 | 24 |
M1 | 2020-01-03 | 24 | 0 | 0 | 24 |
M1 | 2020-01-04 | 17 | 6 | 1 | 24 |
M1 | 2020-01-05 | 0 | 14 | 0 | 14 |
M2 | 2020-01-01 | 24 | 0 | 0 | 24 |
M2 | 2020-01-02 | 24 | 0 | 0 | 24 |
M2 | 2020-01-03 | 24 | 0 | 0 | 24 |
M2 | 2020-01-04 | 24 | 0 | 0 | 24 |
M2 | 2020-01-05 | 9 | 9 | 0 | 18 |
有什么建议吗?
【问题讨论】:
-
您需要旋转数据才能将行转换为列
-
如果我理解你,你想计算特定状态和日期的小时数。我说的对吗?
-
请向我们展示您的尝试。
标签: sql sql-server database recursive-query