Я пишу вам, потому что я обнаружил очень странную проблему при использовании функции MATCH_RECOGNIZE в Oracle. Проблема в том, что когда я не изменяю NLS_LANGUAGE на американский, результаты выглядят следующим образом.
+------------+------------+------+---------+--+
| VALID_FROM | VALID_TO | CST | ACTION | |
+------------+------------+------+---------+--+
| 27-01-2014 | 28-05-2014 | 2511 | Konkurs | |
| 08-08-2014 | 06-10-2014 | 2511 | Konkurs | |
| | | 2511 | Konkurs | |
+------------+------------+------+---------+--+
Однако, когда изменились, результаты верны и лишняя запись (3-я) пропала.
+------------+------------+------+---------+--+
| VALID_FROM | VALID_TO | CST | ACTION | |
+------------+------------+------+---------+--+
| 27-01-2014 | 28-05-2014 | 2511 | Konkurs | |
| 08-08-2014 | 06-10-2014 | 2511 | Konkurs | |
+------------+------------+------+---------+--+
Кто-нибудь из вас знает, почему это происходит? Дополнительная запись создана совершенно неожиданно, и я не могу определить, откуда она взялась. Пожалуйста, найдите ниже часть кода match_recognize.
match_recognize (
PARTITION BY kundenr, oikhaendelse,DEFAULT_TK
ORDER BY valid_to, valid_from
MEASURES min (valid_from) valid_from, MAX (valid_to) valid_to
PATTERN (a b *)
DEFINE b AS valid_from <= prev (valid_to)
)