以前经常看到人查询数据库采用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以上

SQL存储过程动态查询数据区间的更多相关文章

  1. Sql Server 存储过程中查询数据无法使用 Union(All)

    原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...

  2. postgresql 存储过程动态更新数据

    -- 目标:动态更新表中数据 -- 老规矩上代码-----------------------------tablename 表名--feildname 字段名数组--feildvalue 字段值数组 ...

  3. CSharp 如何通过拼接XML调用存储过程来查询数据

    每查询数据,需要访问一次数据库,这样会影响性能:如果把查询的数据拼接成XML形式,作为一个参数整体传给存储过程来处理,这只访问数据库一次,执行速度会快很多. 1.C#代码如下: /// <sum ...

  4. SQL mybatis动态查询小结

    动态返回mysql某张表指定列的名字 <select id="queryColumns" resultType="map" parameterType=& ...

  5. postgresql 存储过程动态插入数据 2

    最近学习postgresql,正一个小活要用上,所以就开始学习了!然而,学习的过程极其艰辛,但却也充满了乐趣. 一般来说数据库的操作不外如何增,删,改,查,而首要的就是要添加数据到数据库中,因为以前的 ...

  6. sql 跨服务器查询数据

    方法一:用OPENDATASOURCE [SQL SERVER] 跨服务器查询 --1 打开 reconfigure reconfigure SELECT * FROM OPENDATASOURCE( ...

  7. sql 存储过程导出指定数据到.txt文件(定时)

    需求:每天生成一份txt文件数据,供第三方通过http方式调用 方法: 1.新建存储过程: USE [LocojoyMicroMessage] GO /****** Object: StoredPro ...

  8. SQL 存储过程 分页查询

    ALTER PROCEDURE [dbo].[gzProc_TablePage] @tablename varchar(MAX),--表名 @selcolumn varchar(MAX),--查询字段 ...

  9. PL/SQL跨库查询数据

    步骤一:找到Database links  (新建) 步骤二:正确填写完对应信息 (应用) : 步骤三:执行PL/SQL语句(完成) select * from tablename@MYDATA 注释 ...

随机推荐

  1. Android Studio git ignore

    # Built application files *.apk *.ap_ # Files for the Dalvik VM *.dex # Java class files *.class # G ...

  2. 【java】一维数组循环位移方阵

    输出: 左移:7 4 8 9 1 5 4 8 9 1 5 7 8 9 1 5 7 4 9 1 5 7 4 8 1 5 7 4 8 9 5 7 4 8 9 1 右移:5 7 4 8 9 1 1 5 7 ...

  3. java实现发送短信

    本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了.在使用前需要注册,注册地址为http://sms.webchinese. ...

  4. Krita编译和旧版本下载

    Linux For Krita 2.9, David Revoy's guide Building Krita for Cats is the best available! Build Krita ...

  5. Redis用户添加、分页、登录、注册、加关注案例

    连接redis代码redis.php <?php //实例化 $redis = new Redis(); //连接服务器 $redis->connect("localhost&q ...

  6. C++ 栈的实现

    #ifndef _STACK_H #define _STACK_H #pragma once template< class T >class Stack{public: Stack( v ...

  7. sass的cd进入目录

    今天在弄sass安装进入项目文件命令 直接f:

  8. C++ *max_element函数找最大元素 *min_element函数找最小元素 STL算法(转)

    http://blog.sina.com.cn/s/blog_6f3a860501019z1f.html #include<iostream> #include<algorithm& ...

  9. FPGA中浮点运算实现方法——定标

    有些FPGA中是不能直接对浮点数进行操作的,仅仅能採用定点数进行数值运算.对于FPGA而言,參与数学运算的书就是16位的整型数,但假设数学运算中出现小数怎么办呢?要知道,FPGA对小数是无能为力的,一 ...

  10. Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法

    makefile的规则 makefile的规则例如以下: target ... : prerequisites ... command ... ... target能够是一个object file(目 ...