假如我有一张表A,里面内容如下
ind    hh   
1       a     
1       b
1       c
1       d
1       e
2       f
3       g
1       h
2       i
3       j
3       k
1       l
3       m
3       n
2       p
现在我想把ind满足
1
2
3

1
3
这种条件的行的数据移动到另外一张表B中去,也就是说把
1       e
2       f
3       g
1       h
2       i
3       j
1       l
3       m
这样的几行移到表B中去,这个SQL语句该如何写呢?

解决方案 »

  1.   

    你这个有点问题,就凭借ind怎么判断是否相邻,总的有个主键吧
      

  2.   

    SELECT ind, hh
      FROM (SELECT ind
                  ,lead(ind, 1) over(ORDER BY rn) next_one
                  ,lead(ind, 2) over(ORDER BY rn) next_two
                  ,lag(ind, 1) over(ORDER BY rn) last_one
                  ,lag(ind, 2) over(ORDER BY rn) last_two
                  ,hh
              FROM (SELECT ind, hh, rownum rn FROM a))
     WHERE (ind = 1 AND (next_one = 2 AND next_two = 3 OR next_one = 3))
           OR (ind = 2 AND next_one = 3 AND last_one = 1)
           OR (ind = 3 AND (last_one = 2 AND last_two = 1 OR last_one = 1))