描述:在表NTHPRATE中查找ZONENO和RATECODE重复的记录,结合起停日期,要求查到起停日期不连续的记录。表结构及数据:
表NTHPRATE
ZONENO    RATECODE    ACTDATE        DEADATE
0101      1           2007-11-14     2007-11-20
0101      1           2007-11-21     2007-11-30
0101      1           2008-11-14     2008-11-20
0101      1           2008-11-21     2008-11-30
0101      1           2008-11-30     2008-12-30

0101      1           2008-12-31     2009-12-30
0101      2           2007-11-14     2007-11-20
0102      2           2008-11-14     2008-11-20
0102      2           2008-11-21     2008-11-30
0102      2           2009-11-14     2009-11-20
根据描述应该查询出红色标记出的数据是正确的结果。希望各位大虾能用存储过程帮忙解决一下这个问题,真是万分感谢了!!

解决方案 »

  1.   

    ZONENO    RATECODE    ACTDATE(启用日期)        DEADATE(停止日期)       序号
    0101      1          2007-11-14                 2007-11-20               1
    0101      1          2007-11-21                 2007-11-30               2
    0101      1          2008-11-14                 2008-11-20               3
    0101      1          2008-11-21                 2008-11-30               4
    0101      1          2008-11-30                 2008-12-30               5
    0101      1          2008-12-31                 2009-12-30               6
    0101      2          2007-11-14                 2007-11-20               7
    0102      2          2008-11-14                 2008-11-20               8
    0102      2          2008-11-21                 2008-11-30               9
    0102      2          2009-11-14                 2009-11-20               101、ZONENO和RATECODE重复的记录是第1——6和8——10这9条记录
    2、起停日期不连续是指:第2条的DEADATE是2007-11-30,第3条的ACTDATE是2008-11-14,这2个日期没有连续,所以第2、3条记录应该被查询到。第1条的停止日期与第2条的启用日期连续,所以第1条记录不被查询到。以此类推麻烦各位大虾了,谢谢!
      

  2.   

    错,第3条是连续的,因为第二条的DEADATE=2008-11-20,并且第四条的ACTDATE=2008-11-21,用LEAD和LAG分析函数可以实现。
      

  3.   

    请注意一下第2条的DEADATE=2007-11-30
    还是谢谢你的提示!