当前位置:  开发笔记 > 编程语言 > 正文

搜索值列表的出现位置

如何解决《搜索值列表的出现位置》经验,为你挑选了1个好方法。

我正在尝试找到一种优化的方法来识别列表中是否存在一组特定的值.

例如,让我们假设表中的以下记录列表

Id          Value
1           A
2           B
3           A
4           C
5           A
6           B
7           C
8           C
9           A

我试图找到一种方法来检查序列{A,B}或{A,B,C}出现多少次,例如.

我知道我可以用游标做到这一点,但我正在检查是否有任何其他选项在性能方面更可取.

我期望的结果将是这样的:

{A, B}: 2 times:
{A, B, C}: 1 time.

我正在使用Sql Server.



1> Gordon Linof..:

可能最简单的方法是使用ANSI标准函数lag()和/或lead():

select count(*)
from (select t.*,
             lead(value) over (order by id) as next_value,
             lead(value, 2) over (order by id) as next_value2,
      from t
     ) t
where value = 'A' and next_value = 'B' and next_value2 = 'C';

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有