求助: 这个SQL查询如何写? 谢谢

  • 似水
    请教各位,

    我需要在如下A表中找出具有相同内容(string字段具有相同内容), 并且记录行号(id字段)是连续的记录. SQL查询基于A, 查询需输出B表, 这个SQL该如何写? 多谢指教!!



    2020-10-18_084921.jpg
  • y
    ylwxb
    想了解下这是什么需求
  • 似水
    回复2#ylwxb
    实验测试数据, 每秒取样并生成记录, 需找出连续时间具有相同值的记录
  • 苏来
    select a.id a.string from a,b where a.id=b.id and a.string = b.string??
  • n
    numbernine
    group min max count on id by string后把count=max-min+1的筛选出来。Hi Google
  • p
    ptcptr
    按5楼思路写的,mssql 下执行通过

    -- 生成临时表
    create table #t(id int,string varchar(20))
    insert #t values(1,'a')
    insert #t values(2,'b')
    insert #t values(3,'c')
    insert #t values(4,'c')
    insert #t values(5,'c')
    insert #t values(6,'d')
    insert #t values(7,'e')
    insert #t values(8,'e')
    insert #t values(9,'f')
    insert #t values(10,'g')


    -- 查询数据
    select * from #t where string in (
    select string from #t group by string having count(*)>1 and max(id)-min(id)=count(*)-1
    )

    -- 删除临时表
    drop table #t
  • a
    awk
    不如改程序 生成表A的时候自动判断上一个id的值是否相等 然后做个标记或者生成新表多简单?
  • n
    numbernine
    写存储过程+用游标可以,如果表很大的话。但这个要求高了点。能简单搞定的不要用复杂的。Hi Google
  • 似水
    谢谢大家 我试试...