我正在执行一项任务,在该任务中,我需要使用createdAt
和sla_name
字段值找到解决票证的预期日期。之后,我需要将此expected date
与holidays
表中的日期进行比较。
如果expected date
落入holidays
,我需要扩展sla_name
字段值。
这是查询正在使用。
SELECT t.sla_meet, t.tid, t.ticket_id, t.ticket_name,t.createdAt,t.updatedAt,t.status, dw.dropdown_name
as ticket_priority,p.project_name, dw3.dropdown_name as ticket_status,t.sla as sla_name,
isn.issue_name as issue_type,inn.incidentName as incident_type,t.ticket_accepted_date,
t.asset_id,t.ticket_closed_date,t.contact_number,
IF(NOW() <= DATE_ADD(t.createdAt,INTERVAL (t.sla)+1 DAY),'YES','NO') AS slaMeetData
from tickets t
JOIN assets ast ON t.asset_id=ast.asset_id
JOIN projects p ON p.project_id=ast.project_id
JOIN admin_dropdowns dw ON t.ticket_priority=dw.id
JOIN admin_dropdowns dw3 ON t.ticket_status=dw3.id
JOIN issues isn ON t.issue_type=isn.issue_id
JOIN incident_names inn ON t.incident_type=inn.incidentId
order by t.tid DESC
这是以上查询的结果数据。
现在,我需要比较holidays
上面的查询。样本数据是
如果IF
上述查询处于预期的日期属于此日期holidays
,我需要sla_name
用COUNT OF HOLIDAYS(如果startdata和enddate有,则需要计算它们之间的天数)+ sla_name来更新值。
如果预计日期在日期范围内(假期的开始和结束日期),则需要计算从预计日期到结束日期的天数,并在sla_name字段中更新该天数
是否可以在SQL中执行此功能?我已将以上查询用作VIEWS。
代替t.sla AS sla_name
,使用此表达式来确定是否将重叠假日的长度添加到天数中:
(
t.sla +
IF(
DATE_ADD(t.createdAt,INTERVAL (t.sla)+1 DAY) BETWEEN holidays.holiday_date AND holidays.end_date,
DATEDIFF( holidays.end_date, holidays.holiday_date ), /* add holiday length number of days */
0 /* no holiday overlap so don't add any days */
)
) as sla_name
您还必须加入假期表中才能找到与所讨论的日期重叠的假期(如果有):
JOIN holidays ON ( DATE_ADD(t.createdAt,INTERVAL (t.sla)+1 DAY) BETWEEN holidays.holiday_date and holidays.end_date )
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句