我正在为学区设计实地考察软件。
每次实地考察都附有一个帐号,将收取费用。它还将具有一个或多个驾驶员/车辆组合以及与每个驾驶员/车辆组合相关联的里程和驾驶员费率。
我正在制作一份会计报告,该帐户报告将按帐户显示分配给该帐户的行程计数,该帐户所行驶的里程总数乘以特定费用,以及总帐数每个司机在这次旅行中驾驶的时数乘以他们的支付率。
我有两辆车和两个司机的实地考察(tripid = 1),我期待两排输出。但是,我得到了4行;用于车辆81的两行和用于车辆56的两行。在我的连接中是否存在导致输出太多行的东西?
在我的查询输出中,Mister Driver在两辆车上都是奇怪的,Generic Person也是如此。
select distinct
tdv.tripid as tripid,
ta.name as account,
cb.chargebasisname as trip_type,
cb.defaultdistancerate as distance_rate,
(tc.odometerreturn-tc.odometerstart) as total_miles,
datediff(hour, tc.actualoriginstarttime,tc.actualoriginreturntime) as total_hours,
v.vehicle,
pr.hourlyrate as driver_rate,
e.firstname+' '+e.lastname as driver
from trip_tripdrivervehicle tdv
join trip_tripinformation ti
on ti.recordid = tdv.tripid
join trip_transportationaccounts ta
on ta.recordid = ti.accountid
join trip_invoicechargebasis cb
on cb.recordid = ta.defaultchargebasisid
join trip_tripcompletion tc
on tc.tripid = ti.recordid
join vehicles v
on v.recordid = tc.vehicleid
join trip_employeejobcategorypayrate pr
on pr.employeeid = tdv.driverid
join employees e
on e.recordid = tdv.driverid
where ti.triprequeststatusid = 7 and ti.recordid = 1
这是我的输出:
答案 0 :(得分:1)
看起来你还有两个与JOIN相匹配的表trip_tripcompletion
- 一个给出总里程为10的行,另一个给出总行数为50的行。
因此每个驱动程序都会显示每个total_miles选项。
可能需要更改此表的JOIN条件,或者您可以使用GROUP BY
和MAX/MIN
来显示最短/最长的行程(取决于需要)。