Id(期号不连续是因为08年到09年过渡时就不连续的,而且每年也不一定就是356期) 3D 组选数据构成情况表: 
---------------------------------- 
期号    开奖号1  开奖号2  开奖号3     开奖号1遗漏值
------------------------------------------------ 
2008356  5      6        1              x(未知上次出现5的位置)2009001  3      3        6              x(未知上次出现3的位置)
2009002  7      1        3              x(未知上次出现7的位置)
2009003  5      0        3              2(2009003期与2008356期之间间隔2)现在就是想求直选遗漏值:就是求当前期的开奖号1 与上次出现被遗漏过几次?现在是由前三列值,咋求取第四列的值( 开奖号1遗漏值)用SQL语句实现输出!

解决方案 »

  1.   


    我看到是子查询的记录是正序,取id=2的记录1 2009001 5 3 6 3 5 6 2 6 3
    2 2009005 5 9 6 5 6 9 2 6 3
    3 2009008 5 3 6 3 5 6 2 6 3但是我是想取倒序的id=2的值咋写sql?
    先把相同列记录取出后取倒第二条记录
      

  2.   

    select * from (select id=row_number() over (partition by c2 order by c2),* from tb  )t where c2=5 order by c1 desc
    -----------------------------------------------
    3 2009008 5 3 6 3 5 6 2 6 3
    2 2009005 5 9 6 5 6 9 2 6 3
    1 2009001 5 3 6 3 5 6 2 6 3
    要是id是正序 ,取第二条就对了!但是?
      

  3.   

    ---分组排序的时候可以倒序
    select
     * 
    from
     (select id=row_number() over (partition by c2 order by c2 desc),* from tb  )t 
    where 
      c2=5 order by c1 desc
      

  4.   


    这样是可以排序,但是取第二条记录不能是id=2?应该是max(id)-1?咋办,是不是太复杂了?
      

  5.   

    就是
    id=row_number() over (partition by c2 order by c2 desc)这个id
      

  6.   


    但是这个id是列相同记录的id相减是1呀?
    3 2009008 5 3 6 3 5 6 2 6 3
    2 2009005 5 9 6 5 6 9 2 6 3
    1 2009001 5 3 6 3 5 6 2 6 3
    看这样,id?
    我是真的晕了;能不能补充完整,咋弄?
      

  7.   

     string sql1 = "select Count(Id) from tb3D where Id<"
                        + _Id + " and Id>"
                        + "(select Max(Id) from tb3D where MaxNum=" + _maxnum + " and Id<" + _Id + ")";
    拼接下就行了,就是用count()