本人比较喜欢对一句SQL反复琢磨,尤喜欢(也算擅长)写逻辑复杂但句子极短,执行起来特快的妙语。以下这句是Delphi盒子一位网友提出来的需求。

见网页:http://bbs.2ccc.com/topic.asp?topicid=401993

 

比如:表 aa 结构如下:
----------
bm g0
----------
201101 0
201102 1
201103 1
201104 1
201105 1
201106 0
201107 0
201108 0
200109 1
----------
我要查询连续的1 或0 的最大连续数量
以上最大的连续数量为4 ,如何用sql语句查询出来

 

本人回复如下:

DECLARE @X INT = 0, @Y INT = 0, @Z INT = 0;
SELECT
    @Z = CASE WHEN @Y > @Z THEN @Y ELSE @Z END,
    @Y = CASE g0 WHEN @X THEN @Y + 1 ELSE 1 END,
    @X = g0
FROM
    aa

ORDER BY

    bm;

PRINT @Z;

 

一句话搞定,又快又好!