Алгоритм проверки качества истории

Качество истории в исторической таблице можно проверить простым алгоритмом, сумма длины периодов действия равна общей длине истории.

Реализация алгоритма на Oracle:
WITH T_CITY AS
(SELECT 1 ID_C, 'Москва' CITY, DATE '1900-01-01' BEG_DT, DATE '1990-01-01' END_DT FROM DUAL UNION
 SELECT 1 ID_C, 'Омск'   CITY, DATE '1990-01-01' BEG_DT, DATE '2999-01-01' END_DT FROM DUAL UNION
 SELECT 2 ID_C, 'Томск'  CITY, DATE '1900-01-01' BEG_DT, DATE '2999-01-01' END_DT FROM DUAL 
) 
SELECT ID_C
FROM T_CITY
GROUP BY ID_C --PK
HAVING SUM(ABS((END_DT - BEG_DT))) <> MAX(END_DT) - MIN(BEG_DT);

Комментарии