这段SQL查询语句的意思是从三个表中获取数据并进行合并:

  1. 第一个查询语句从"dbo.MachineInfo"表和"MaintainInfo"表中获取数据。如果"MaiType"为空或者为0,并且在子查询中获取的最新的"MaiType=0"的记录中的"MaiMacId"与当前记录的"MaiMacId"相同,则计算当前日期与"MaiTime"之间的天数差作为"Day"列的值,否则为null。

  2. 第二个查询语句从"MaintainInfo"表中获取数据。如果"MaiType"为1,并且计算当前日期与"MaiTime"加上7天之间的天数差小于等于3,并且在子查询中获取的最新的"MaiType=1"的记录中的"MaiMacId"与当前记录的"MaiMacId"相同,则计算当前日期与"MaiTime"加上7天之间的天数差作为"Day"列的值。

  3. 第三个查询语句从"MaintainInfo"表中获取数据。如果"MaiType"为2,并且计算当前日期与"MaiTime"加上30天之间的天数差小于等于3,并且在子查询中获取的最新的"MaiType=2"的记录中的"MaiMacId"与当前记录的"MaiMacId"相同,则计算当前日期与"MaiTime"加上30天之间的天数差作为"Day"列的值。

最后,将三个查询结果合并为一个结果集

select MacFidcase MaiType when 0 then datediffdaygetdatedateaddday1MaiTime else null end DayMaiType from dboMachineInfo left join MaintainInfo m on MacFid=mMaiMacId where MaiType is null or MaiType=0

原文地址: https://www.cveoy.top/t/topic/it2v 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录