我有些设备必须经常维护,我创建了一个SQL DB来安排这些设备的时间。现在,我想知道每个设备的下一个维护日期。
我有四种类型的维护,每个维护都有间隔(像这样)
CI ---------- 12000 Hour
HGPI-------24000 hour
CI2 -------- 36000 Hour
MI --------- 48000 Hour
我已经在数据库中为维护创建了一个表,因此将记录每个维护,然后记录是否已完成(像这样)
M_ID | Device_ID | Device_Work_Hours | M_Type | M_Done | M_ExpectedDate
1 | 1 | 25000 | HGPI | NO | 5-12-2019
我想使用以下逻辑为这些维护记录建立查询:
我正在使用MS SQL Server。 SQL专家,请您的帮助。
答案 0 :(得分:0)
假设还有一个表,其中包含维护类型。 该M_ID是该表的外键。
还假设维护完成后,有一个M_Done number列等于1。
SELECT m.*
FROM your_maintenance_table AS m
JOIN your_maintenance_type_table AS mtp
ON mtp.ID = m.M_ID
AND mtp.Type IN ('CI', 'HGPI', 'MI')
WHERE (m.M_Done <> 1 OR m.M_Done IS NULL)
AND
(CASE
WHEN mtp.Type = 'CI' AND m.Device_Work_Hours < 24000 THEN 1
WHEN mtp.Type = 'HGPI' AND m.Device_Work_Hours Device_Work_Hours BETWEEN 24000 AND 48000 THEN 2
WHEN mtp.Type = 'MI' AND m.Device_Work_Hours > 48000 THEN 3
ELSE 0
END) > 0;