日期:2014-05-18  浏览次数:20436 次

高手门帮忙大型数据库SQL语句问题
SQL数据库中有一表TDATA,有字段AA,BB,CC,DD,EE,FF,GG,LH,LHSUM表中的记录有近1000万条,字段AA,BB,CC,DD,EE,FF,GG里面存储的是整型数字,从0-10000的数字,现在要做的是:
每行记录从AA,BB,CC,DD,EE,FF,GG这几个字段里面判断这几个字段里面的数字是否是连续的,比如AA=100,BB=101的话,那么BB、AA是属于连续的数字,现在希望通过SQL语句来判断这几个字段中是否存在连续的数字,会出现几次连续的数字:

例如1:
字段:       AA         BB             CC           DD         EE             FF         GG  
值:         101       102         103         104       105             106       107  
那么,LH的值应该为7,表示最多有7个数字相连;LHSUM的值为1,表示出现了1段连续的数字。
例如2:
字段:       AA         BB             CC           DD         EE             FF         GG  
值:         101       102         103           211       212           213       214  
那么,LH的值应该为4,表示最多有4个数字相连;LHSUM的值为2,表示出现了2段连续的数字。
例如3:
字段:       AA         BB             CC           DD         EE             FF         GG  
值:         101       102         104           105       212           213       215  
那么,LH的值应该为2,表示最多有2个数字相连;LHSUM的值为3,表示出现了3段连续的数字。
备注:只要相邻的2个字段符合数字是递增1相连就表示为字段相连
如何通过SQL来实现?请高手指教!

------解决方案--------------------
要不了1个小时。

一步步来(暂时只想到这个笨方法):
update TDATA set LH=7,LHSUM=1 where BB=AA+1 and CC=AA+2 and DD=AA+3 and EE=AA+4 and FF=AA+5 and GG=AA+6

update ....

还好只有7个字段,组合不算多。

我再想想有没有简单的方法。同时期待高手们出手。