我正在尝试按经销商查找每列(日期)之间的差异。
我的表包含经销商,月份和每个月的值。我试图找出几个月之间的差异(上一个-下一个)。我已经尝试了一些LAG,LEAD查询,但没有得到正确的结果。
noneMatch
答案 0 :(得分:1)
LEAD可以在设施上使用PARTITION BY
。
并且ORDER BY
应该在日期字段上。
此外,最好开始使用JOIN
语法。
旧的逗号语法在上个世纪已经过时了。
SELECT fac.FCLTY_NO, fac.CSR_MN, fac.CP1KVINS,
LEAD(fac.CP1KVINS, 1, 0) OVER (PARTITION BY fac.FCLTY_NO ORDER BY fac.CSR_MN) AS NEXT_CPIKVIN,
LEAD(fac.CP1KVINS, 1, 0) OVER (PARTITION BY fac.FCLTY_NO ORDER BY fac.CSR_MN) - fac.CP1KVINS AS DIFF_CP1KVIN
FROM USER9.WPO_VIN_VST_CLM_CY17_TO_DATE fac
JOIN DRBA.ADA_DEALER_T dealer
ON dealer.DEALER_NO = fac.FCLTY_NO
WHERE dealer.CHANNEL_ELIG_CD = 'N'
AND dealer.APPOINT_DT < '01JAN2018'
AND dealer.TERM_DT = '31DEC9999'
ORDER BY fac.FCLTY_NO, fac.CSR_MN;
结果:
FCLTY_NO CSR_MN CP1KVINS NEXT_CPIKVIN DIFF_CP1KVIN
01016 01/01/2017 1060 1000 -60
01016 01/02/2017 1000 1070 70
01016 01/03/2017 1070 1070 0
01016 01/04/2017 1070 1060 -10
01016 01/05/2017 1060 1070 10
01016 01/06/2017 1070 1060 -10
01016 01/07/2017 1060 1050 -10
01016 01/08/2017 1050 1060 10
01016 01/09/2017 1060 1040 -20
01016 01/10/2017 1040 0 -1040