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


    以前经常看到人查询数据库采用left join及case方式,一条一条的枚举查询整个数据的数据区间方法可行,但是数据一但很大,枚举就死悄悄,在网上查看,几乎全是照抄case ,left join枚举无耐自己写了个存储过程,希望给大家抛砖引玉!

    set ANSI_NULLS ON
    set QUOTED_IDENTIFIER ON
    go
    
    ALTER PROC pro_UserList 
    @jisum int,--基数
    @step int,--步长
    @max int--列举最大值
    as
    SET NOCOUNT ON
    
    ----Create Temporary Table
    CREATE 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
        
       END
    
    SELECT sumlist AS '数量',tongji AS '区间统计(年龄)' FROM #tempTable
    
    go
    
    EXEC pro_UserList 20,2,100
    --EG:
    --UserList
    --id name age
    --1	aa	20
    --2	bb	21
    --3	cc	23
    --4	dd	30
    --5	ee	33
    --6	dd	40
    --7	ff	70
    --8	gg	90
    --9	mm	101
    --10    jj	103
    --打印结果:
    --数量   统计区间(年龄
    --5      20- 40
    --2      40-80
    --3      80以上
    
  • 相关阅读:
    JsonParse类
    vs2013提交项目到github
    js选中select
    按每20条分组查询
    批量修改图片格式
    当前日期后10天日期
    C#生成不重复随机数的方法
    接收端通过Request.InputStream读取流
    C#文件流的读写
    C#中HttpWebRequest的用法详解
  • 原文地址:https://www.cnblogs.com/snake-hand/p/3161367.html
Copyright © 2020-2023  润新知