【发布时间】:2019-02-07 14:28:25
【问题描述】:
我正在处理一个查询,以计算滚动日历上每件设备自最近一次预防性维护 (PM) 以来的时间。目标是构建一个数据框来分析何时进行修复。
下面是我的查询结果表,其中添加了“自上次 PM 以来的时间”列,这是我想要的列。
调用此表 1:
EquipmentNumber |Year |weeknumber |Current Week Repair|Time Since Last PM
2069186 |2018 |10 |1 |5
2069186 |2018 |21 |1 |1
1626930 |2018 |09 |1 |21
1626930 |2019 |03 |1 |15
预防性维护数据来自如下设置的查询/表,即表 2。
Equipment Number |Year |WeekNumber
2069186 |2018 |5
2069186 |2018 |20
1626930 |2017 |40
1626930 |2018 |40
所以我需要确保对于我的最终查询表 1,设备 2069186 的“自上次 PM 以来的时间”第一个记录是从表 2 中的 2018 年第 5 周到 2018 年第 10 周的差异。对于第二个记录设备 2069186 的“自上次 PM 以来的时间”应该是表 1 中的 2018 年第 21 周和表 2 中的 2018 年第 20 周之间的差。对于设备 1626930,第一个记录应该是表 1 中的 2018 年第 9 周到 2017 年第 40 周的差表 2. 对于设备 1626930,第二条记录应该是表 1 中 2019 年第 3 周到表 2 中 2018 年第 40 周的差异。请记住,我想要表 1 中的当前记录与之前的最新 PM 之间的差异表 1 中的年份和星期。
表 1 和表 2 的查询非常基础。
SELECT
DISTINCT EquipmentNumber,
Year,
weeknumber,
[Current Week Repair]
FROM TableA
SELECT
EquipmentNumber,
DatePart(Year, Created) as Year,
DatePart(Week, Created) as WeekNumber
FROM TableB
关于连接两个表并进行计算的正确方法有什么建议吗?或者有没有办法利用任何人都可以建议的临时表和变量?任何意见将不胜感激!
【问题讨论】:
-
SQL 服务器版本?
-
是 Microsoft SQL Server
标签: sql-server tsql dynamic-columns