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以上
SQL存储过程动态查询数据区间的更多相关文章
- Sql Server 存储过程中查询数据无法使用 Union(All)
原文:Sql Server 存储过程中查询数据无法使用 Union(All) 微软Sql Server数据库中,书写存储过程时,关于查询数据,无法使用Union(All)关联多个查询. 1.先看一段正 ...
- postgresql 存储过程动态更新数据
-- 目标:动态更新表中数据 -- 老规矩上代码-----------------------------tablename 表名--feildname 字段名数组--feildvalue 字段值数组 ...
- CSharp 如何通过拼接XML调用存储过程来查询数据
每查询数据,需要访问一次数据库,这样会影响性能:如果把查询的数据拼接成XML形式,作为一个参数整体传给存储过程来处理,这只访问数据库一次,执行速度会快很多. 1.C#代码如下: /// <sum ...
- SQL mybatis动态查询小结
动态返回mysql某张表指定列的名字 <select id="queryColumns" resultType="map" parameterType=& ...
- postgresql 存储过程动态插入数据 2
最近学习postgresql,正一个小活要用上,所以就开始学习了!然而,学习的过程极其艰辛,但却也充满了乐趣. 一般来说数据库的操作不外如何增,删,改,查,而首要的就是要添加数据到数据库中,因为以前的 ...
- sql 跨服务器查询数据
方法一:用OPENDATASOURCE [SQL SERVER] 跨服务器查询 --1 打开 reconfigure reconfigure SELECT * FROM OPENDATASOURCE( ...
- sql 存储过程导出指定数据到.txt文件(定时)
需求:每天生成一份txt文件数据,供第三方通过http方式调用 方法: 1.新建存储过程: USE [LocojoyMicroMessage] GO /****** Object: StoredPro ...
- SQL 存储过程 分页查询
ALTER PROCEDURE [dbo].[gzProc_TablePage] @tablename varchar(MAX),--表名 @selcolumn varchar(MAX),--查询字段 ...
- PL/SQL跨库查询数据
步骤一:找到Database links (新建) 步骤二:正确填写完对应信息 (应用) : 步骤三:执行PL/SQL语句(完成) select * from tablename@MYDATA 注释 ...
随机推荐
- Android Studio git ignore
# Built application files *.apk *.ap_ # Files for the Dalvik VM *.dex # Java class files *.class # G ...
- 【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 ...
- java实现发送短信
本程序是通过使用中国网建提供的SMS短信平台实现的(该平台目前为注册用户提供5条免费短信,3条免费彩信,这足够用于我们测试用了.在使用前需要注册,注册地址为http://sms.webchinese. ...
- Krita编译和旧版本下载
Linux For Krita 2.9, David Revoy's guide Building Krita for Cats is the best available! Build Krita ...
- Redis用户添加、分页、登录、注册、加关注案例
连接redis代码redis.php <?php //实例化 $redis = new Redis(); //连接服务器 $redis->connect("localhost&q ...
- C++ 栈的实现
#ifndef _STACK_H #define _STACK_H #pragma once template< class T >class Stack{public: Stack( v ...
- sass的cd进入目录
今天在弄sass安装进入项目文件命令 直接f:
- C++ *max_element函数找最大元素 *min_element函数找最小元素 STL算法(转)
http://blog.sina.com.cn/s/blog_6f3a860501019z1f.html #include<iostream> #include<algorithm& ...
- FPGA中浮点运算实现方法——定标
有些FPGA中是不能直接对浮点数进行操作的,仅仅能採用定点数进行数值运算.对于FPGA而言,參与数学运算的书就是16位的整型数,但假设数学运算中出现小数怎么办呢?要知道,FPGA对小数是无能为力的,一 ...
- Ubuntu下用glade和GTK+开发C语言界面程序(三)——学习make的使用方法
makefile的规则 makefile的规则例如以下: target ... : prerequisites ... command ... ... target能够是一个object file(目 ...