首页 > 解决方案 > NLS_LANG 导致 MATCH RECOGNIZE ORACLE SQL 出现问题

问题描述

我写信给你是因为我在 Oracle 中使用 MATCH_RECOGNIZE 函数时发现了一个非常奇怪的问题。问题是,当我没有将 NLS_LANGUAGE 更改为 American 时,结果如下。

+------------+------------+------+---------+--+
| VALID_FROM | VALID_TO   | CST  | ACTION  |  |
+------------+------------+------+---------+--+
| 27-01-2014 | 28-05-2014 | 2511 | Konkurs |  |
| 08-08-2014 | 06-10-2014 | 2511 | Konkurs |  |
|            |            | 2511 | Konkurs |  |
+------------+------------+------+---------+--+

然而,当改变结果是正确的并且额外的记录(3rd)消失了。

+------------+------------+------+---------+--+
| 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) 
  )

标签: sqloracle

解决方案


推荐阅读