我最近搬到了一个新职位,负责处理记录在Oracle表上的运输数据。这些表中的一个包括用于载波速率的数据,并且以“开始/至今”格式记录。一个示例是,运营商1在日期A和B之间具有特定的费率。但是,在任何给定的时间范围之间,可能有一个运营商或多个运营商。如果有多个运营商,则需要提供表格中另一个字段的加权平均值。
随着承运人的到来或被删除,起始/结束日期将更新为新值。我被问到的业务问题是“如果货件在日期A和日期B之间,则费率应该是多少?”。
这是我到目前为止所拥有的:
SELECT
origin_id,
destination_id,
equip_type,
MIN(from_date) AS from_date,
MAX(TO_DATE) AS TO_DATE,
CEIL(AVG(award_pctof_lane)) AS awd_pct,
CEIL(AVG(weekly_lane_volume)) AS awd_vol,
TO_CHAR(SUM(award_pctof_lane * linehaul_rate_per_mile) / SUM(award_pctof_lane), '$9,999.00') AS awd_weight_rpm,
( trunc(SYSDATE) - MIN(trunc(from_date)) ) AS days_active
FROM
service_lane_table
WHERE
award_pctof_lane > 0
AND linehaul_rate_per_mile > 0
AND origin_id = 'Location1'
AND destination_id = 'Destination1'
AND EQUIP_TYPE = '53FT'
GROUP BY
origin_id,
destination_id,
equip_type
ORDER BY
origin_id,
destination_id,
equip_type
但是,我认为这些数据不准确,因为它会将所有记录压缩为一条记录,所以查看原始表。
如果我要手动执行此操作,则将获得以下结果,该结果将建立清晰的时间轴/时间轴。
任何人都能提供的帮助/建议将不胜感激。