给定如下表结构:
CAT | BUSINES_NR | TIME_A | 版本SOME_CODE|||
---|---|---|---|---|---|
ABC | 123 | 2009-02-19T00:00:00 | <1>OPP|||
ABC | 456 | 2009-03-18 00:00:00 | 1 | ZUM||
ABC | 444 | 2009-03-18 00:00:00 | 1 | ZUM||
ABC | 444 | 2009-03-18 00:00:00 | 2 | MUZ | |
ABC | 456 | 2009-04-18 00:00:00 | 2 | XXX | |
ABC | 456 | 2009-04-18 00:00:00 | 3 | XXX | |
ABC | 456 | 2009-04-18 00:00:00 | UIO | ||
ABC | 456 | 2009-05-18 00:00:00 | 5 | RQA||
DEF | 637 | 2018-02-16 00:00:00 | 1 | 一汽||
DEF | 789 | 2018-02-17 00:00:00 | <1>WER[/tr>|||
SPZ | 123 | 2018-02-16 00:00:001 | AAA | ||
SPZ | 123 | 2018-02-17 00:00:00 | 2 | BBB||
SPZ | 123 | 2018-02-18 00:00:00 | 3 | AAA||
SPZ | 123 | 2018-02-19 00:00:00CCC | |||
SPZ | 123 | 2018-02-20 00:00:005 | AAA|||
SPZ | 123 | 2018-02-21 00:00:00DDD | |||
SPZ | 123 | 2018-02-22 00:00:00DDD | |||
SPZ | 123 | 2018-02-23 00:00:00DDD | |||
SPZ | 123 | 2018-02-24 00:00:00EEE | |||
SPZ | 123 | 2018-02-25 00:00:0010 | EEE | ||
SPZ | 123 | 2018-02-26 00:00:0011 | DDD | ||
SPZ | 123 | 2018-02-27 00:00:00 | 12 | BBB | |
SPZ | 123 | 2018-02-26 00:00:0013 | EEE | ||
SPZ | 123 | 2018-02-27 00:00:0014 | EEE | ||
GHI | 248 | 2018-02-17 00:00:001 | QWE | ||
GHI | 248 | >2019-02-17 00:00:00 | 2 | 购买力平价||
GHI | 357 | 2020-02-16 00:00:00 | 1 | 法国队||
GHI | 420 | 2020-02-16 00:00:00 | 1 | QDS||
GHI | 357 | 2020-02-16 00:00:00 | 2 | GGG||
GHI | 357 | 2020-02-16 00:00:00 | 3 | LLL||
GHI | 357 | 2020-02-16 00:00:00 | >td>LLL | ||
GHI | 357 | 2020-08-16 00:00:00 | 4 | 法国队||
GHI | 357 | 2020年10月16日00:00:00 | 5 | ZZZ
您可以使用LAG
函数查看以前的版本,看看some_code
是否与当前版本匹配,然后使用SUM
来获得所有代码更改的总数。
SELECT cat, moenat, SUM (version_change) AS total_version_changes
FROM (SELECT cat,
TRUNC (TIME_A, 'MON') AS moenat,
CASE
WHEN some_code <>
LAG (some_code) OVER (PARTITION BY cat ORDER BY version, time_a)
OR LAG (some_code) OVER (PARTITION BY cat ORDER BY version, time_a) IS NULL --Needed for version 1
THEN
1
ELSE
0
END AS version_change
FROM blah)
GROUP BY cat, moenat
ORDER BY cat, moenat;
CAT MOENAT TOTAL_VERSION_CHANGES
______ ____________ ________________________
ABC 01-FEB-09 1
ABC 01-MAR-09 2
ABC 01-APR-09 2
ABC 01-MAY-09 1
DEF 01-FEB-18 2
GHI 01-FEB-18 1
GHI 01-FEB-19 1
GHI 01-FEB-20 4
GHI 01-AUG-20 1
GHI 01-OCT-20 1
SPZ 01-FEB-18 10