从上下文来看,我在运输业工作。另外,我为一个糟糕的标题道歉-我不知道如何总结我的问题。
我目前正在编辑一份现有的报告,该报告返回司机ID、他们的姓名、他们被雇用的时间,以及他们自进入公司以来行驶的总里程数。我注意到,在公司内流动的驾驶员会被分配一个不同的驾驶员ID,这不计入他们的总行驶里程。通过向我提供的一个示例,我确实能够确认这个场景,如下所示:
DriverCode DriverName
----------- ----------------
WETDE Wethington,Dean
WETDEA Wethington,Dean
这是获取上述内容的查询(示例驱动程序现在是硬编码的):
select mpp.mpp_id as DriverCode,
mpp.mpp_lastfirst as DriverName
from manpowerprofile mpp
outer apply (select top 1 mpp_id
from manpowerprofile) as id
where mpp_firstname = 'Dean'
and mpp_lastname = 'Wethington'
这是当前的查询:
SELECT lh.lgh_driver1 as DriverCode
,m.mpp_lastfirst as DriverName
,m.mpp_hiredate as HireDate
,SUM(s.stp_lgh_mileage) as TotMiles
FROM stops s (nolock)
INNER JOIN legheader lh (nolock) on lh.lgh_number = s.lgh_number
INNER JOIN manpowerprofile m (nolock) on m.mpp_id = lh.lgh_driver1
/* OUTER APPLY ( SELECT top 1 mpp_id
FROM manpowerprofile) as id */
WHERE m.mpp_terminationdt > GETDATE()
AND m.mpp_id <> 'UNKNOWN'
AND lh.lgh_outstatus = 'CMP'
GROUP BY lh.lgh_driver1, m.mpp_lastfirst, m.mpp_hiredate
HAVING SUM(s.stp_lgh_mileage) > 850000
ORDER BY DriverCode DESC
我要做的是检查一个名字是否存在两次,如果存在两次,将两个驾驶员代码的总英里数加在一起,返回单个驾驶员的一个结果。我还是一个非常新手的SQL开发人员,现在才真正开始深入研究数据库。
我目前的思路是使用外部应用程序,但我相信有更好的方法来实现这一点。