动态分组查询

原创 2004年10月09日 09:52:00

原帖地址:
http://community.csdn.net/Expert/topic/3428/3428792.xml?temp=.6476251

--示例数据
create table 表(ID int,NUM int)
insert 表 select 1,2
union all select 2,3
union all select 3,2
union all select 4,2
union all select 5,12
union all select 6,2
union all select 7,1
union all select 8,5
union all select 9,1
go

/*--问题说明:

输入分组参数,比如输入 "3,6" ,实现按 ID<=3,3<ID<=6,ID>6 分组查询
输入分组参数,比如输入 "2,5,8" ,实现按 ID<=2,2<ID<=5,5<ID<=8,ID>8 分组查询
--*/

--查询的存储过程
create proc p_qry
@numlist varchar(1000)
as
set nocount on
declare @t table(id int identity,组 varchar(10),a int,b int)
declare @i int,@pnum varchar(10)
select @i=charindex(',',@numlist+',')
 ,@pnum=left(@numlist,@i-1)
 ,@numlist=stuff(@numlist,1,@i,'')
 ,@i=charindex(',',@numlist)
insert @t select 'id<='+@pnum,null,@pnum
while @i>0
begin
 insert @t select @pnum+'<id<='+left(@numlist,@i-1),@pnum,left(@numlist,@i-1)
 select @pnum=left(@numlist,@i-1)
  ,@numlist=stuff(@numlist,1,@i,'')
  ,@i=charindex(',',@numlist)
end
insert @t select 'id>'+@numlist,@numlist,null

select b.组,num=sum(a.num)
from 表 a,@t b
where case
 when b.a is null then case when a.id<=b.b then 1 else 0 end
 when b.b is null then case when a.id>b.a then 1 else 0 end
 else case when a.id>b.a and a.id<=b.b then 1 else 0 end
 end=1
group by b.组
order by min(b.id)
go

--调用存储过程进行查询
exec p_qry '2,5,8'
go

--删除测试
drop table 表
drop proc p_qry

/*--测试结果

组          num        
---------- -----------
id<=2      5
2<id<=5    16
id>8       1
--*/

mybatis 动态sql 多表分组查询

废话不多说直接上例子: SELECT b.props_and_uses_name as propsAndUsesName, COUNT(*) as constructionNumber...
  • DAMMXX
  • DAMMXX
  • 2017年10月17日 08:17
  • 365

动态分组查询

原帖地址:http://community.csdn.net/Expert/topic/3428/3428792.xml?temp=.6476251--示例数据create table 表(ID in...
  • chenzhiya
  • chenzhiya
  • 2008年01月03日 15:07
  • 106

mysql + mybatis分组查询注意事项

mysql + mybatis分组查询注意事项
  • u011935772
  • u011935772
  • 2017年05月06日 14:25
  • 1450

mybatis中resultMap使用之返回分组数据

resultMap是mybatis最重要的强大元素。通过描述数据的关系结构,将结果集进行映射到java类或java bean中,达到结果集复杂处理的目的。本文解决的主要问题的分组数据的返回...
  • u013334660
  • u013334660
  • 2017年07月14日 16:11
  • 1664

连接查询和分组查询

《升序》ASC  《降序》DESC relationship *** 分组查询: ** 使用 group by 进行分组查询 语句:《有列名:StudentID,CourseID,Scores》...
  • tj857172
  • tj857172
  • 2017年09月28日 15:59
  • 265

hibernate分组查询

private static final String LIST_COUNT = "select f.type as t,count(f.type) as c from Fetch as f grou...
  • lihua2915
  • lihua2915
  • 2011年03月30日 17:02
  • 5278

Oracle高级查询--分组查询篇

什么是分组函数? 分组函数作用于一组数据,并对一组数据返回一个值。 常用的分组函数为AVG、SUM、MIN、MAX、COUNT、WM_CONCAT1.1 Oracle分组函数1使用AVG(平均值)...
  • SunMoonJP
  • SunMoonJP
  • 2017年01月24日 15:15
  • 3021

Hibernate中的sql语句中使用分组查询

今天在写代码时需要用到分组查询,对于查询结果的获取有点不明白, 1.我的应用场景:   优化一个分组查询    数据库里面有一张表message(故障表),包括的字段有message_id(故障编码)...
  • u011998957
  • u011998957
  • 2016年04月11日 15:30
  • 1559

第十一章 连接查询和分组查询

/****** Script for SelectTopNRows command from SSMS ******/ SELECT TOP 1000 [Id] ,[StudentN...
  • qq_36074150
  • qq_36074150
  • 2016年11月25日 18:57
  • 372

【Hibernate】Hibernate的聚类查询、分组查询、排序与时间之差

在Hibernate中的HQL语句其实能够基本能够实现SQL语句所做的事情,正如jQuery至于javascript一样。虽然HQL语句是对类的查询,但是HQL在实行聚类查询、分组查询、排序与时间之差...
  • yongh701
  • yongh701
  • 2015年04月20日 10:37
  • 2182
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:动态分组查询
举报原因:
原因补充:

(最多只允许输入30个字)