我需要一种方法来连续获取第一个条目,如果第二行中的值相同则忽略它,依此类推。 我正在看的领域是checktype。所以得到第一个我,然后是O然后我排除重复的行。
**实施例**
<p>USERID CHECKTIME CHECKTYPE VERIFYCODE</p>
<p>2 2015-10-19 07:50:32.000 I 0 1</p>
<p>2 2015-10-19 09:17:57.000 I 6 1</p>
<p>2 2015-10-19 09:19:31.000 O 0 1</p>
<p>2 2015-10-19 10:16:32.000 I 6 1</p>
<p>2 2015-10-19 10:19:44.000 O 6 1</p>
<p>2 2015-10-19 13:41:41.000 O 6 1</p>
<p>2 2015-10-19 13:41:46.000 I 6 1</p>
<p>2 2015-10-19 13:50:29.000 O 0 1</p>
<p>2 2015-10-19 16:03:00.000 I 6 1</p>
**我需要返回**
<p>2 2015-10-19 07:50:32.000 I 0 1</p>
<p>2 2015-10-19 09:19:31.000 O 0 1</p>
<p>2 2015-10-19 10:16:32.000 I 6 1</p>
<p>2 2015-10-19 10:19:44.000 O 6 1</p>
<p>2 2015-10-19 13:41:46.000 I 6 1</p>
<p>2 2015-10-19 13:50:29.000 O 0 1</p>
<p>2 2015-10-19 16:03:00.000 I 6 1</p>
答案 0 :(得分:0)
使用LAG
查看上一条记录,比较CHECKTYPE和标记重复记录。然后排除这样找到的记录。
select userid, checktime, checktype, verifycode
from
(
select
userid, checktime, checktype, verifycode,
case when checktype = lag(checktype) over (order by checktime) then 1 else 0 end
as is_repeated
from mytable
) marked
where is_repeated = 0
order by checktime;
答案 1 :(得分:0)
感谢Thorsten。
我们试图编写一个已经存在的整个函数。 完全按照我的需要工作。