请问一个sql语句:如何实现“连续”这个概念?
我现在有如下的一个表a, 
 columnA(字符型)   columnB(日期型)   ColumnC(数字型) 
 a                                                   2007-01-01                        15.00 
 b                                                   2007-02-02                        20.00 
 c                                                   2007-03-03                        30.00 
 d                                                   2007-04-04                           -25.10 
 f                                                   2002-01-01                           -33.00 
 ……   
 其中columnB就是每个月只有一个值,如2006年2月,存储的值就是2006-02-02,2007年11月,存储的值就是2007-11-11   
 这个表很大而且无序,现在我想找出这样的值:ColumnA连续4个月ColumnC的值为负的记录,请问有没有直接的函数可以用呢?又不能写存储过程。。 
------解决方案--------------------SQL>  select * from a;   
 COLUMNA              COLUMNB       COLUMNC 
 -------------------- ---------- ---------- 
 a                    01-1月 -07         15 
 a                    02-2月 -07         35 
 a                    03-3月 -07        -15 
 a                    04-4月 -07        -25 
 a                    05-5月 -07        -30 
 a                    06-6月 -07        -30 
 a                    07-7月 -07        -40 
 a                    08-8月 -07        -50 
 a                    09-9月 -07        100 
 b                    01-1月 -07         10 
 b                    02-2月 -07        -20   
 COLUMNA              COLUMNB       COLUMNC 
 -------------------- ---------- ---------- 
 b                    03-3月 -07         20 
 b                    04-4月 -07        -30 
 b                    05-5月 -07         30 
 b                    06-6月 -07        -40 
 b                    07-7月 -07        -50 
 b                    08-8月 -07         50 
 b                    09-9月 -07        -60   
 已选择18行。   
 select columnA,min(to_char(columnB, 'yyyy-mm-dd ')) minB, 
         max(to_char(columnB, 'yyyy-mm-dd ')) maxB from  
 (select columnA,columnB, 
 add_months(trunc(columnB, 'mm '),1-rank() over(partition by columnA order by columnB)) rcb 
               from (select distinct columnA, trunc(columnB) columnB from a 
                     where columnC  <0 order by columnB)) 
 group by columnA,rcb  
 having count(*) > = 4 
 /   
 COLUMNA              MINB                 MAXB 
 -------------------- -------------------- -------------------- 
 a                    2007-03-03           2007-08-08     
 从CSDN一个帖子学来的,不敢藏私,与大家分享。 
 解释:首先将所有C为负的列选择出来。利用分析函数rank()给所有columnA相同的列 
 按columnB排序后给予一定的序号。该序号是连续的。 
 利用add_months减去对应的序号(还要+1,为什么自己想),这样如果C为负的B是连续 
 的话,那么减去连续的序号后,必然是相同的数据X,如果不连续得出的X也不相同。 
 例如 
 a      b      b-a 
 1      10     9 
 2      11     9 
 3      14     11 
 4      15     11 
 5      16     11 
 6      17     11 
 7      18     11 
 8      20     12 
 9      21     12 
 然后利用分组,判断相同A相同X超过4次以上为连续4个月为负数的值。