Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql oracle识别列的每个更改_Sql_Oracle - Fatal编程技术网

Sql oracle识别列的每个更改

Sql oracle识别列的每个更改,sql,oracle,Sql,Oracle,我有下表: CC | BEGIN | END | ORDER 1215 | 20.03.2015 14:59:21 | 23.03.2015 13:47:19 | 1 1310 | 23.03.2015 13:47:19 | 27.03.2015 19:19:23 | 2 1105 | 27.03.2015 19:19:23 | 03.04.2015 18:10:22 | 3 1205 | 03.04.2015 18:10:22

我有下表:

CC   | BEGIN               | END                 | ORDER

1215 | 20.03.2015 14:59:21 | 23.03.2015 13:47:19 | 1
1310 | 23.03.2015 13:47:19 | 27.03.2015 19:19:23 | 2
1105 | 27.03.2015 19:19:23 | 03.04.2015 18:10:22 | 3
1205 | 03.04.2015 18:10:22 | 04.04.2015 17:48:51 | 4
4650 | 04.04.2015 17:48:51 | 05.04.2015 13:28:20 | 5
1215 | 05.04.2015 13:28:20 | 10.04.2015 11:00:01 | 6
1310 | 12.04.2015 15:10:52 | 20.04.2015 09:44:39 | 7
1220 | 20.04.2015 09:44:39 | 22.04.2015 18:10:13 | 8
1220 | 23.04.2015 10:46:25 | 23.04.2015 10:49:08 | 9
1215 | 23.04.2015 10:49:08 | 23.04.2015 11:00:14 | 10
1215 | 23.04.2015 11:00:14 | 23.04.2015 11:47:45 | 11
1215 | 23.04.2015 11:47:45 | 29.04.2015 04:33:27 | 12
1215 | 29.04.2015 04:33:27 | 01.05.2015 16:46:53 | 13
2880 | 01.05.2015 16:46:53 | 06.05.2015 15:55:13 | 14
1210 | 06.05.2015 15:55:13 | 08.05.2015 16:35:40 | 15
1210 | 08.05.2015 16:35:40 | 15.05.2015 18:10:00 | 16
1205 | 17.05.2015 14:19:01 | 21.05.2015 15:29:08 | 17
1205 | 21.05.2015 15:29:08 | 24.05.2015 16:59:14 | 18
1205 | 24.05.2015 16:59:14 | 27.05.2015 14:33:59 | 19
1205 | 27.05.2015 14:33:59 | 01.06.2015 12:42:45 | 20
1205 | 27.05.2015 14:33:59 | 01.06.2015 12:42:45 | 20
我正在寻找一种方法,每次列CC更改时都输入一个唯一的数字。 例如:


我尝试过使用LAG()和LEAD()函数,它只在CC列重复两次时工作正常这是通常使用
/
稠密的_秩
函数所做的

请看,您需要以某种方式使用它:

select ..., dense_rank() over (order by cc) column_i_wish, ...
这应该起作用:

SELECT CC, "BEGIN", "END", "ORDER",
       SUM(flag) OVER (ORDER BY "ORDER")  AS new_column
FROM (
  SELECT CC, "BEGIN", "END", "ORDER",
         CASE WHEN LAG(CC) OVER (ORDER BY "ORDER") = CC THEN 0 ELSE 1 END AS flag
  FROM mytable) AS t

这不起作用,因为订单是由
“order”
字段指定的,而不是
“CC”
字段指定的。
SELECT CC, "BEGIN", "END", "ORDER",
       SUM(flag) OVER (ORDER BY "ORDER")  AS new_column
FROM (
  SELECT CC, "BEGIN", "END", "ORDER",
         CASE WHEN LAG(CC) OVER (ORDER BY "ORDER") = CC THEN 0 ELSE 1 END AS flag
  FROM mytable) AS t