你可以使用MATCH_RECOGNIZE:
SELECT datecode,
customer_account,
company_name
FROM table_name
MATCH_RECOGNIZE (
PARTITION BY customer_account
ORDER BY datecode
MEASURES
LAST( datecode ) AS datecode,
LAST( company_name ) AS company_name
ONE ROW PER MATCH
PATTERN ( company* same_company )
DEFINE
company AS FIRST( company_name ) = NEXT( company_name )
)
其中,对于样本数据:
CREATE TABLE table_name ( datecode, customer_account, company_name ) AS
SELECT DATE '2020-11-01', 10001000000004, 'Apple' FROM DUAL UNION ALL
SELECT DATE '2020-11-02', 10001000000004, 'Apple' FROM DUAL UNION ALL
SELECT DATE '2020-11-03', 10001000000004, 'Apple' FROM DUAL UNION ALL
SELECT DATE '2020-11-04', 10001000000004, 'Apple' FROM DUAL UNION ALL
SELECT DATE '2020-11-05', 10001000000004, 'Microsoft' FROM DUAL UNION ALL
SELECT DATE '2020-11-06', 10001000000004, 'Microsoft' FROM DUAL UNION ALL
SELECT DATE '2020-11-07', 10001000000004, 'Google' FROM DUAL UNION ALL
SELECT DATE '2020-11-08', 10001000000004, 'Google' FROM DUAL UNION ALL
SELECT DATE '2020-11-09', 10001000000004, 'Apple' FROM DUAL UNION ALL
SELECT DATE '2020-11-10', 10001000000004, 'Apple' FROM DUAL;
输出:
日期代码 |客户帐户 |公司名
:----------------- | ---------------: | :-----------
2020-11-04 00:00:00 | 10001000000004 |苹果
2020-11-06 00:00:00 | 10001000000004 |微软
2020-11-08 00:00:00 | 10001000000004 |谷歌
2020-11-10 00:00:00 | 10001000000004 |苹果
db小提琴here