- 浏览: 79218 次
- 性别:
- 来自: dg
文章分类
- 全部博客 (70)
- [随笔分类]DB(数据库) (18)
- c# (1)
- 实用参考代码 (1)
- 默认收藏夹 (9)
- [网站分类]6.读书区(技术书籍阅读心得、书籍推荐) (1)
- xml&web服务 (1)
- [随笔分类]Asp.net (18)
- C# BLOG (1)
- 技术仓库 (0)
- .net (1)
- 编程技巧 (1)
- [随笔分类].Net Framework (1)
- [随笔分类]程序人生(非技术) (1)
- [随笔分类]其他技术类 (1)
- [随笔分类]WAP (1)
- 收藏夹 (1)
- 其他 (1)
- DotNet技术 (4)
- [网站分类]3.非技术区(技术之外的文章,但不要涉及任何政治内容) (4)
- [网站分类]7.提问区(建议在<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>中提问) (2)
- [网站分类]1.首页原创精华.NET区(包含架构设计、设计模式)(对首页文章的要求:原创、高质量、经过认真思考并精心写作) (1)
- [随笔分类]Javascript & Css & Html (1)
最新评论
create table abc(
i nvarchar(10),
ii int,
iii int,
iiii int,
price money)
go
insert into abc
select 'b',1,2,1,11
union all
select 'b',211,2,1,211
union all
select 'a',21,2,1,311
union all
select 'd',41,42,1,411
union all
select 'd',41,42,1,511
union all
select 'd',41,42,1,611
union all
select 'e',1,2,1,11
union all
select 'e',71,2,1,31
union all
select 'e',61,2,1,911
union all
select 'e',771,2,1,1
go
要求的结果是:
以i分组,求每组price最大的前2条记录
i ii iii iiii price
---------- ----------- ----------- ----------- ---------------------
a 21 2 1 311.0000
b 1 2 1 11.0000
b 211 2 1 211.0000
d 41 42 1 511.0000
d 41 42 1 611.0000
e 71 2 1 31.0000
e 61 2 1 911.0000
1.
select *
from abc a
where (
select count(*) from abc b
where a.i=b.i and b.price>a.price)<2
order by i,price
连接查询,判断数量
2.
select i,ii,iii,iiii,price
from (
select (select isnull(sum(1),0)+1 from abc b where a.i=b.i and a.price<b.price) ids,*
from abc a) tem
where ids<3
order by i,price
生产一个内部表,给内部表tem中的每一组排序,并把排序号放入新列ids中
3.
declare @looptime int
declare @count int
declare @i nvarchar(10)
/*定义表变量@abc,和表ABC中的所有列类型相同*/
declare @abc table(
i nvarchar(10),
ii int,
iii int,
iiii int,
price money)
declare @tem table(
ids int identity,
class nvarchar(10))
/*把表ABC中的所有组全部查询出来,暂时存在表变量@tem中*/
insert into @tem(class)
select i
from abc
group by i
/*求出表变量@tem中行数量*/
select @count=@@rowcount
/*循环变量@looptime赋初值=1*/
select @looptime=1
while(@looptime<=@count)
begin
/*将每组名赋值到变量@i*/
select @i=class
from @tem
where ids=@looptime
/*将每组前2名插入到表变量@abc中*/
insert into @abc
select top 2 *
from abc
where i=@i
order by price desc
/*循环变量@looptime累加1*/
select @looptime=@looptime+1
end
/*显示结果*/
select *
from @abc
order by i,price
4.
用游标来处理
方法和我的第3种方法类似,大家可以自己试试
我共写了4种,不知道大家还有什么其他好方法,可以交流,谢谢。
发表评论
-
MS SQL数据库备份和恢复存储过程(加强版本)
2004-05-20 13:55 745上次写了MS SQL数据库备份和恢复存储过程详细情况见(htt ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 960在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1045UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
局部临时表和表变量的重复创建问题随笔
2005-04-22 11:51 884今天遇到一个需求,是根据逻辑判断动态创建局部临时表 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 711Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 729sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 705TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 853公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 788APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 8981.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
2008-09-02 07:48 8401.简介:Sql Server2005新增加了DDL触发器。与 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 705Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2132DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6819--方法0:动态SQL法declare @s varchar( ... -
sqlserver字符串合并(merge)方法汇总
2008-11-19 20:23 3561--方法1--使用游标法进行字符串合并处理的示例。--处理的数 ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1039--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1174--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
在对SQL Server系统执行入侵测试或者更高级别的安全审计时,有一种测试不应该被忽略,那就是SQL Server密码测试。这一点看起来显而易见,但是很多人都会忽略它。 SQL Server密码破解工具简介 使用XML在SQL ...
支持 MS SQL 2005 之前的版本 不支持 sql 2008 介绍 Log Explorer主要用于对MSSQLServer的事物分析和数据恢复。你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的...
为了避免出现此类问题,您必须在安装有 SQL Server Express 的服务器中完全启用 MS DTC 服务。 若要完全启用 MS DTC,请执行下列操作: 在“控制面板”中,打开“管理工具”,再双击“组件服务”。 在左窗格的...
10.求以下表达式的值,写出您想到的一种或几种实现方法: 1-2+3-4+……+m [Page] 答: int Num = this.TextBox1.Text.ToString() ; int Sum = 0 ; for (int i = 0 ; i ; i++) { if((i%2) == 1) { Sum += i ; ...
Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动...
round方法返回与参数最接近的长整数,参数加1/2后求其floor. 30、String s = new String("xyz");创建了几个String Object? 两个 31、EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的? ...
通过反射调用類的方法,屬性,字段,索引器(2種方法) ASP.NET: State Server Gems 完整的动态加载/卸载程序集的解决方案 从NUnit中理解.NET自定义属性的应用(转载) 如何在.NET中实现脚本引擎 (CodeDom篇) .NET的插件...
round方法返回与参数最接近的长整数,参数加1/2后求其floor. 27、String s = new String("xyz");创建了几个String Object? 两个 28、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。写出程序...
Oracle数据库有哪几种启动方式 说明: 有以下几种启动方式: 1、startup nomount 非安装启动,这种方式启动下可执行:重建控制文件、重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动...
091 "姓名 " "学号 " "实验组" " "实验时间 "2012-6-1 "指导教师" "成绩 " " "实验项目名称"实验六:数据库系统设计 " "实" " "验"要求掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方法, " ...
Windows XP(包括 Windows 2000)的控制台命令是在系统出现一些意外情况下的一种非常有效的诊断和测试以及恢复系统功能的工具。小编的确一直都想把这方面的命令做个总结,这次辛苦老范给我们整理了这份实用的秘笈。 ...
执行安装前请先确保你的系统已经安装了Office Excel软件。 2.安装成功后,打开编制好的文件,选中所有要导入的需求记录,注意:只选数据. Export To Quality 3.点击“工具” Center 4.输入QC的URL地址 5.输入项目...
该实例可进行局域网的聊天、一对多、多对一、和多对多的传送和续传,理论上这是我本人的实现目的,而且目前经测试已基本实现了上述功能,而且网速一般有几M/S。另外有只打开一个应用程序、CRichEdit的使用、最小到...
Adobe Photoshop Linux MS SQL Server MS Windows 关于Windows 7 的"任务栏",以下描述正确的是______。 显示系统的所有功能 只显示正在后台工作的程序窗口 只显示当前活动程序窗口名 便于实现程序窗口之间的切换 ...
然而,我们建议您先阅读本指南的前几章(第 1 章到第 4 章),即第 I 部分,因为这些章节可帮助您了解安全模型并可帮助您自行确定核心技术和安全服务。应用程序架构设计师一定要阅读第 3 章,这一章提供了一些有关跨...
Chronicle 是一个超低延迟、高吞吐、持久化的消息和事件驱动的内存数据库,延迟只有16纳秒以及支持每秒钟 500-2000 万消息/记录。 google-api-translate-java(Java 语言对Google翻译引擎的封装类库) 语音识别程序 ...
功能强大的 MS SQL Server题库支持,使您可以实现多种方式组卷。 清正-专业网络考试系统支持多媒体试卷,用户可以在试卷中插入声音、图画、影片等文件,让您的试卷活起来、动起来。可以采用3种方式自由组卷(自动...
一共10几包,每个包几十兆。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、...
一共10几包,每个包几十兆。 Visual.C++编程技巧精选500例源代码 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、...