要产生工作量预测,我需要合并“预订时间”(此处为“sapactivities”)和“计划时间”(这里为计划活动)的表格。输出应包含独特的日/资源/通知组合所花费的每日总时间,优先于“已预订”而非“已计划”时间。根据条件输出没有重复日期的行
SELECT date_format(result.CurrentDate, '%a, %d.%m.%Y'),
result.Resource, result.Notification, result.Hours, result.Effort
FROM
(SELECT sapactivities.start AS 'CurrentDate',
sapactivities.activitytext AS 'Resource',
sapactivities.notification AS 'Notification',
SUM(TIMESTAMPDIFF(MINUTE,start,end)/60) AS 'Hours',
'Booked' AS 'Effort'
FROM work.sapactivities
GROUP BY sapactivities.notification,sapactivities.activitytext,sapactivities.start
UNION ALL
SELECT plannedactivities.activitydate AS 'CurrentDate',
/*CONCAT_WS(' ',resource.firstname,resource.lastname) AS 'Resource',*/
resource.sapActivityText AS 'Resource',
notification.notification AS 'Notification',
plannedactivities.hours AS 'Hours',
'Planned' AS 'Effort'
FROM work.plannedactivities
LEFT JOIN work.notification ON plannedactivities.idNotification = notification.id
LEFT JOIN work.resource ON plannedactivities.idResource = resource.id) AS result
GROUP BY result.Resource, result.Notification, DATE (result.CurrentDate),
CASE WHEN result.Effort = 'Booked' THEN 'Booked' ELSE 'Planned' END
ORDER BY result.Resource,result.CurrentDate ASC;
但是我仍然通过“预订”和“计划”努力获得重复的行/资源/通知行。我在外部GROUP BY子句中尝试了多种方法,但没有得到我期待的结果...任何想法?
完美的作品。你对LEFT JOINS的评论我没有真正得到 - 我认为这两个JOIN都被执行,因为第二个后面有一个右括号。同样在结果资源列正确给予 – formatter
很高兴我可以帮助:)没有注意到第二个后面的支架;) –