【发布时间】:2020-09-08 08:02:33
【问题描述】:
我有这种情况:
表格有更多列。每次记录的一个字段发生变化时,“BEGIN_DATE”和“END_DATE”列都会发生变化。
N_POlICY BEGIN_DATE END_DATE C_STATUS
50.007.267.xxx 29-feb-2012 0.00.00.0 20-nov-2015 0.00.00.0 0
50.007.267.xxx 20-nov-2015 0.00.00.0 24-dic-2015 0.00.00.0 0
50.007.267.xxx 24-dic-2015 0.00.00.0 29-mar-2017 0.00.00.0 0
50.007.267.xxx 29-mar-2017 0.00.00.0 4-lug-2017 0.00.00.0 7
50.007.267.xxx 4-lug-2017 0.00.00.0 29-ago-2017 0.00.00.0 0
50.007.267.xxx 29-ago-2017 0.00.00.0 10-ott-2017 0.00.00.0 7
50.007.267.xxx 10-ott-2017 0.00.00.0 29-mag-2018 0.00.00.0 0
50.007.267.xxx 29-mag-2018 0.00.00.0 10-lug-2018 0.00.00.0 7
50.007.267.xxx 10-lug-2018 0.00.00.0 31-dic-2050 0.00.00.0 0
我正在尝试开发一个仅显示具有不同状态的记录的选择,因此仅在状态更改时才显示。结果应该是这样的:
N_POlICY BEGIN_DATE END_DATE C_STATUS
50.007.267.xxx 24-dic-2015 0.00.00.0 29-mar-2017 0.00.00.0 0
50.007.267.xxx 29-mar-2017 0.00.00.0 4-lug-2017 0.00.00.0 7
50.007.267.xxx 4-lug-2017 0.00.00.0 29-ago-2017 0.00.00.0 0
50.007.267.xxx 29-ago-2017 0.00.00.0 10-ott-2017 0.00.00.0 7
50.007.267.xxx 10-ott-2017 0.00.00.0 29-mag-2018 0.00.00.0 0
50.007.267.xxx 29-mag-2018 0.00.00.0 10-lug-2018 0.00.00.0 7
50.007.267.xxx 10-lug-2018 0.00.00.0 31-dic-2050 0.00.00.0 0
感谢@Fahmi,我使用了这个查询,结果是这样的:
SELECT * FROM
(
SELECT N_POLICY,
BEGIN_DATE,
END_DATE,
C_STATUS,
LAG(C_STATUS) OVER(PARTITION BY N_POLICY ORDER BY BEGIN_DATE) AS PREV_STATUS
FROM TABLE_NAME
)A WHERE C_STATUS <> PREV_STATUS AND N_POLICY = '50007267xxx'
N_POlICY BEGIN_DATE END_DATE C_STATUS PREV_ST
50.007.267.536 29-mar-2017 0.00.00.0 4-lug-2017 0.00.00.0 7 0
50.007.267.536 4-lug-2017 0.00.00.0 29-ago-2017 0.00.00.0 0 7
50.007.267.536 29-ago-2017 0.00.00.0 10-ott-2017 0.00.00.0 7 0
50.007.267.536 10-ott-2017 0.00.00.0 29-mag-2018 0.00.00.0 0 7
50.007.267.536 29-mag-2018 0.00.00.0 10-lug-2018 0.00.00.0 7 0
50.007.267.536 10-lug-2018 0.00.00.0 31-dic-2050 0.00.00.0 0 7
【问题讨论】: