`
逆风的香1314
  • 浏览: 1416269 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

动态分组查询

阅读更多

原帖地址:
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
--*/

分享到:
评论

相关推荐

    sqlserver+group by分组查询分页存储过程

    根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...

    计算机软件-商业源码-动态分组例.zip

    4. **数据库查询优化**:在数据库系统中,动态分组可能是SQL查询的一部分,比如GROUP BY子句的实现。这涉及到索引策略、查询计划选择、存储过程的编写等。 5. **编程语言特性**:动态分组的实现依赖于所使用的编程...

    C# winform 动态分组统计

    在C# WinForm应用开发中,动态分组统计是一种常见的数据处理需求,它涉及数据库查询、数据绑定以及用户界面的交互。"C# winform 动态分组统计"这个项目可能是一个用于实现这一功能的模块,允许用户根据不同的字段...

    RDLC分组查询

    RDLC(Report Definition Language with Components)是微软的 Reporting Services 提供的一种报告设计语言,...通过这些文件,你可以找到一个关于 RDLC 报表的示例应用,学习如何在实践中实现动态列和分组查询的功能。

    定时任务quartz实现分组串行并行动态配置

    总的来说,通过熟练掌握Quartz的API和核心概念,我们可以实现定时任务的动态分组、串行和并行配置,以适应不断变化的业务需求。在实践中,需要充分考虑系统的资源限制、任务间的依赖关系以及错误处理策略,确保定时...

    birt动态分组报表制作.doc

    在BIRT(Business Intelligence and Reporting Tools)中,动态分组报表是一种高级的报表设计功能,它允许用户根据数据的不同属性进行灵活的分组和汇总,从而生成更复杂、更具洞察力的数据视图。以下是关于“BIRT...

    QBC的各种查询

    4. **分组查询**:Criteria的createCriteria(String associationPath)方法可以用于创建子查询,配合setProjection(Projections projections)进行分组,Projections提供了groupProperty()方法用于按属性分组。...

    JS动态树分组的实现,数据库建表,JSP页面展示

    本项目主要涉及JavaScript(JS)实现动态树分组、数据库建表以及JSP页面的展示。以下将详细阐述这些知识点。 **JavaScript动态树分组** JavaScript动态树分组是指在网页前端利用JavaScript库,如jQuery、React或Vue...

    birt动态分组报表制作.docx

    在本文中,我们将深入探讨如何使用BIRT(Business Intelligence and Reporting Tools)来创建动态分组报表。BIRT是一款开源的报表系统,它允许开发者创建丰富的、交互式的报表,并集成到Web应用程序中。 ### 1. ...

    oracle_11gR2_08 分组查询GROUP BY,模糊查询LIKE

    在Oracle 11g Release 2数据库管理系统中,掌握分组查询GROUP BY、模糊查询LIKE、连接查询JOIN以及IN()和NOT IN()等查询技术是至关重要的,它们为数据分析师和开发人员提供了强大的数据筛选与汇总能力。以下是对这些...

    Expression表达式树动态查询.zip

    此外,还可能探讨如何处理复杂查询,如嵌套条件、分组、排序等,以及如何结合 LINQ 提供的便利性来增强表达式树的功能。 通过学习这个主题,开发者不仅可以提升对C#高级特性的理解,还能掌握构建灵活、可扩展的查询...

    【IT十八掌徐培成】Java基础第24天-04.分组查询-having-连接查询-笛卡尔积.zip

    今天我们要探讨的是Java基础中的数据库操作,特别是SQL查询技术,包括分组查询、HAVING子句、连接查询以及笛卡尔积。这些概念在处理复杂数据时至关重要。 首先,让我们了解分组查询。在SQL中,GROUP BY语句用于将...

    LINQ to SQL语句(23)之动态查询

    总结一下,"LINQ to SQL语句(23)之动态查询"这一主题主要讨论了如何利用System.Linq.Dynamic库在运行时构建和执行查询,以及如何处理各种查询操作如筛选、联接、分组和投影。虽然动态查询提供了灵活性,但也要注意其...

    C#List集合分组winform把List分组

    当需要对这些数据进行分组和筛选时,C#提供了Linq(Language Integrated Query,语言集成查询)这一强大的工具。 标题"**C# List集合分组WinForm把List分组**"涉及到的关键知识点是C#中的List集合以及如何利用Linq...

    基于维度分组降维的高维数据近似k近邻查询.docx

    3) 改进了LSH编码方式,引入信息熵对编码函数进行筛选和动态权重赋值,通过加权汉明距离计算结果集,提高了查询的准确率和效率,降低了内存消耗。 相关工作主要集中在低维空间的kNN查询,如文献[9-13]提出的各种...

    Linq动态查询、行转列

    `System.Linq.Dynamic`库提供了`DynamicQuery`类,允许我们用字符串形式来构建查询表达式,这使得在运行时动态生成和执行查询成为可能。例如,我们可以根据用户输入的查询条件构建一个字符串,然后调用`Where()`方法...

    微软rdlc报表创建、设置数据、设置分组、分组统计

    1. **参数**:RDLC报表支持用户输入参数,允许用户自定义查询条件,动态地过滤报表数据。 2. **子报表**:如果需要在报表中嵌入另一个报表,可以使用子报表。子报表可以独立于主报表,有自己的数据源和数据集。 3....

    用SQL语言进行动态查询.pdf

    其中,SELECT子句指定要查询的列,FROM子句指定查询的数据来源,WHERE子句指定查询的条件,GROUP BY子句指定分组依据,HAVING子句指定分组中的查询条件,ORDER BY子句指定查询结果的排序顺序。 动态查询的实现可以...

    分页存储过程,仅适用于Sql2005以上,使用 ROW_NUMBER()函数用于多表分页查询,可以分组查询

    本文将详细介绍一个基于 SQL Server 2005 的分页存储过程,该存储过程不仅支持多表分页查询,还能进行分组查询。 #### 二、存储过程设计 此存储过程名为 `PagePro_v6`,旨在提供一种灵活且高效的分页查询方法。...

Global site tag (gtag.js) - Google Analytics