SQL存储过程动态查询数据区间

来源:互联网 发布:少儿趣味编程学些什么 编辑:程序博客网 时间:2024/05/21 19:50
以前经常看到人查询数据库采用left join及case方式,一条一条的枚举查询整个数据的数据区间方法可行,但是数据一但很大,枚举就死悄悄,在网上查看,几乎全是照抄case ,left join枚举无耐自己写了个存储过程,希望给大家抛砖引玉!
set ANSI_NULLS ONset QUOTED_IDENTIFIER ONgoALTER PROC pro_UserList @jisum int,--基数@step int,--步长@max int--列举最大值asSET NOCOUNT ON----Create Temporary TableCREATE TABLE #tempTable(sumlist int,--统计数tongji varchar(50)--统计区间)--initial--INSERT INTO #tempTable VALUES(0,'00-00')WHILE (0<1)   BEGIN     IF(@jisum*@step<@max)        BEGIN            INSERT INTO #tempTable SELECT COUNT(*),STR(@jisum,3,0)+'-'+STR(@jisum*@step,3,0)            FROM [dbo].[UserList]            WHERE age>=@jisum AND age<@jisum*@step                   END     ELSE        BEGIN           INSERT INTO #tempTable SELECT COUNT(*),STR(@jisum,3,0)+'以上'            FROM [dbo].[UserList]            WHERE age>=@jisum           BREAK        END    SELECT @jisum=@jisum*@step       ENDSELECT sumlist AS '数量',tongji AS '区间统计(年龄)' FROM #tempTablegoEXEC pro_UserList 20,2,100--EG:--UserList--id name age--1aa20--2bb21--3cc23--4dd30--5ee33--6dd40--7ff70--8gg90--9mm101--10    jj103--打印结果:--数量   统计区间(年龄--5      20- 40--2      40-80--3      80以上
原创粉丝点击