原帖地址:
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
--*/
分享到:
相关推荐
"MongoDB 使用 MongoTemplate 实现统计和分组" MongoDB 是一个非常流行的 NoSQL 数据库,它可以存储大量的数据,但是有时候我们需要对这些数据进行分析和利用。在本文中,我们将介绍如何使用 MongoTemplate 实现...
根据给定的SQL Server存储过程代码片段,我们可以深入解析与SQL Server中的`GROUP BY`分组查询、存储过程以及分页技术相关的知识点。 ### SQL Server中的`GROUP BY`分组查询 `GROUP BY`子句在SQL查询语言中用于将...
4. **数据库查询优化**:在数据库系统中,动态分组可能是SQL查询的一部分,比如GROUP BY子句的实现。这涉及到索引策略、查询计划选择、存储过程的编写等。 5. **编程语言特性**:动态分组的实现依赖于所使用的编程...
在C# WinForm应用开发中,动态分组统计是一种常见的数据处理需求,它涉及数据库查询、数据绑定以及用户界面的交互。"C# winform 动态分组统计"这个项目可能是一个用于实现这一功能的模块,允许用户根据不同的字段...
RDLC(Report Definition Language with Components)是微软的 Reporting Services 提供的一种报告设计语言,...通过这些文件,你可以找到一个关于 RDLC 报表的示例应用,学习如何在实践中实现动态列和分组查询的功能。
在BIRT(Business Intelligence and Reporting Tools)中,动态分组报表是一种高级的报表设计功能,它允许用户根据数据的不同属性进行灵活的分组和汇总,从而生成更复杂、更具洞察力的数据视图。以下是关于“BIRT...
总的来说,通过熟练掌握Quartz的API和核心概念,我们可以实现定时任务的动态分组、串行和并行配置,以适应不断变化的业务需求。在实践中,需要充分考虑系统的资源限制、任务间的依赖关系以及错误处理策略,确保定时...
4. **分组查询**:Criteria的createCriteria(String associationPath)方法可以用于创建子查询,配合setProjection(Projections projections)进行分组,Projections提供了groupProperty()方法用于按属性分组。...
本项目主要涉及JavaScript(JS)实现动态树分组、数据库建表以及JSP页面的展示。以下将详细阐述这些知识点。 **JavaScript动态树分组** JavaScript动态树分组是指在网页前端利用JavaScript库,如jQuery、React或Vue...
在本文中,我们将深入探讨如何使用BIRT(Business Intelligence and Reporting Tools)来创建动态分组报表。BIRT是一款开源的报表系统,它允许开发者创建丰富的、交互式的报表,并集成到Web应用程序中。 ### 1. ...
在Oracle 11g Release 2数据库管理系统中,掌握分组查询GROUP BY、模糊查询LIKE、连接查询JOIN以及IN()和NOT IN()等查询技术是至关重要的,它们为数据分析师和开发人员提供了强大的数据筛选与汇总能力。以下是对这些...
此外,还可能探讨如何处理复杂查询,如嵌套条件、分组、排序等,以及如何结合 LINQ 提供的便利性来增强表达式树的功能。 通过学习这个主题,开发者不仅可以提升对C#高级特性的理解,还能掌握构建灵活、可扩展的查询...
今天我们要探讨的是Java基础中的数据库操作,特别是SQL查询技术,包括分组查询、HAVING子句、连接查询以及笛卡尔积。这些概念在处理复杂数据时至关重要。 首先,让我们了解分组查询。在SQL中,GROUP BY语句用于将...
总结一下,"LINQ to SQL语句(23)之动态查询"这一主题主要讨论了如何利用System.Linq.Dynamic库在运行时构建和执行查询,以及如何处理各种查询操作如筛选、联接、分组和投影。虽然动态查询提供了灵活性,但也要注意其...
`System.Linq.Dynamic`库提供了`DynamicQuery`类,允许我们用字符串形式来构建查询表达式,这使得在运行时动态生成和执行查询成为可能。例如,我们可以根据用户输入的查询条件构建一个字符串,然后调用`Where()`方法...
当需要对这些数据进行分组和筛选时,C#提供了Linq(Language Integrated Query,语言集成查询)这一强大的工具。 标题"**C# List集合分组WinForm把List分组**"涉及到的关键知识点是C#中的List集合以及如何利用Linq...
为了解决这一问题,研究人员提出了基于维度分组降维的高维数据近似k近邻查询方法。该方法的核心思想是利用数据维度之间的关联关系,将数据中的维度按照相关性分组,并运用降维技术减少数据的复杂性。通过这一过程,...
1. **参数**:RDLC报表支持用户输入参数,允许用户自定义查询条件,动态地过滤报表数据。 2. **子报表**:如果需要在报表中嵌入另一个报表,可以使用子报表。子报表可以独立于主报表,有自己的数据源和数据集。 3....
本文将详细介绍一个基于 SQL Server 2005 的分页存储过程,该存储过程不仅支持多表分页查询,还能进行分组查询。 #### 二、存储过程设计 此存储过程名为 `PagePro_v6`,旨在提供一种灵活且高效的分页查询方法。...