我无法从我构建的查询中获得我想要的结果。我想要实现的总体目标是获得当月的第一个里程表读数和特定车辆的最后一个里程表读数。然后我想减去这两个以获得该月的总里程数。我认为带有窗口函数的派生表最有助于实现这一目标(参见下面的示例SQL)。
SELECT
VEHICLE_ID2_FW
FROM
(SELECT
VEHICLE_ID2_FW,
LOCATION_CODE_FW,
MIN(ODOMETER_FW) OVER(PARTITION BY YEAR(DATE_FW), MONTH(DATE_FW)) AS MIN_ODO,
MAX(ODOMETER_FW) OVER(PARTITION BY YEAR(DATE_FW), MONTH(DATE_FW)) AS MAX_ODO
FROM
GPS_TRIPS_FW) AS G
我一直遇到派生表的查询本身运行的问题 作品。但是,当我将它括在FROM子句中时,它会发回错误
无法绑定多部分标识符
希望我能得到一些帮助来解决这个问题,并希望找到一个更好的方法来实现我的目标。谢谢!
答案 0 :(得分:0)
里程表只会增加(好吧,应为真)。所以只需使用聚合:
select VEHICLE_ID2_FW, year(date_fw), month(date_fw),
min(ODOMETER_FW), max(ODOMETER_FW),
max(ODOMETER_FW) - min(ODOMETER_FW) as miles_driven_in_month
from GPS_TRIPS_FW
group by VEHICLE_ID2_FW, year(date_fw), month(date_fw);
这回答了您提出的问题。但是,我认为它不能解决您的问题,因为每月驱动的总里程数不会达到驱动的总里程数。问题是在月底的最后一条记录与下个月初的第一条记录之间的里程数。
如果这是一个问题,请询问其他问题。提供样本数据,所需结果和适当的数据库标记。