[英]SQL Query with if-else logic
我有一些必须随时维护的设备,我为这些设备创建了一个 SQL 数据库来安排时间。 现在我想知道每个设备的下一次维护日期。
我有四种类型的维护,每一种都有间隔(像这样)
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 专家。
假设还有一个包含维护类型的表。 而 M_ID 是该表的外键。
还假设有一个 M_Done 数字列在维护完成时等于 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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.