本人比较喜欢对一句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;
一句话搞定,又快又好!
浙公网安备 33010602011771号