- 浏览: 82579 次
- 性别:
- 来自: 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 778上次写了MS SQL数据库备份和恢复存储过程详细情况见(htt ... -
ORDER BY排序后,表中字段相加的困惑?
2005-02-03 16:38 1010在sql server2000自带DB-pubs 运行下面的s ... -
sql server中UNION 运算符随笔(几个需要注意的地方小总结)
2005-03-03 11:35 1114UNION 运算符是将两个或更多查询的结果组合为单个结果集 ... -
局部临时表和表变量的重复创建问题随笔
2005-04-22 11:51 926今天遇到一个需求,是根据逻辑判断动态创建局部临时表 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TRY…CATCH
2007-12-03 13:56 753Transact-SQL 代码中的错误可使用 TRY…CATC ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-数据类型
2007-12-03 14:57 783sql server2005新增加了2大数据类型: 1.大值数 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-TOP 运算符
2007-12-03 16:49 772TOP 运算符介绍:TOP 运算符在Sql Serve ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-公用表表达式(CTE)
2008-07-31 14:52 904公用表表达式是Sql Server ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-APPLY 运算符
2008-08-13 15:07 821APPLY 运算符简介: APPLY 运算符是Sql Serv ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-窗口函数(OVER)
2008-08-26 07:53 9361.简介: SQL Server 2005中的窗口函数帮助你迅 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-DDL触发器
2008-09-02 07:48 8861.简介:Sql Server2005新增加了DDL触发器。与 ... -
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
2008-09-03 07:49 743Microsoft SQL Server 2005扩展了SQL ... -
sqlserver日期推算(年,季度,月,星期推算)
2008-11-19 19:20 2234DECLARE @dt datetimeSET @dt=GET ... -
sqlserver字符串拆分(split)方法汇总
2008-11-19 20:06 6919--方法0:动态SQL法declare @s varchar( ... -
sqlserver字符串合并(merge)方法汇总
2008-11-19 20:23 3630--方法1--使用游标法进行字符串合并处理的示例。--处理的数 ... -
sqlserver排序规则在拼音处理中的应用
2008-11-21 08:53 1077--1. 按拼音排序DECLARE @t TABLE(co ... -
sqlserver排序规则在全角与半角处理中的应用
2008-11-21 09:41 1223--1.查询区分全角与半角字符--测试数据DECLARE ...
相关推荐
MS SQL 2000 的数据库复制技术是一种用于在不同服务器之间同步和分发数据的方法,确保数据的一致性。复制技术在多种场景下都非常有用,例如在局域网、拨号连接或互联网上分发数据给远程或移动用户,提高应用程序性能...
每个表都有一个唯一的名称,由多个字段组成,每个字段定义了一种特定的数据类型。例如,"Customers"表可能包含"CustomerID"、"CompanyName"和"ContactName"等字段。 4. **关系**:在罗斯文数据库中,数据通常不是...
MS SQL SERVER 提供了三种安全模式:Standard Security (标准安全模式)、Integrated Security (集成安全模式) 和 Mixed Security (混合安全模式)。Standard Security 模式需要用户有 SQL SERVER 上的 Logi n ID 和...
锁可以根据其用途和行为分为几种不同的类型: 1. **共享锁**:当一个用户需要读取数据时,MS-SQL Server会自动为该数据分配共享锁。这种锁可以允许多个用户同时读取数据,但在数据被锁定期间不允许任何用户对其进行...
2. **数据库系统表**:每个数据库都有一组自己的系统表,如sysobjects、syscolumns和sysindexes,它们记录了数据库中的对象(如表、视图、索引)的详细信息。 3. **动态管理视图(DMV)**:虽然不是传统意义上的...
总之,"ms sql server 自动备份设置工具"为企业提供了一种便捷的方式,来管理和执行SQL Server的自动备份策略,确保数据安全无虞。通过理解备份类型、配置合适的备份计划、设定备份目标以及监控备份过程,用户可以...
这个过程可以通过几种不同的方法来实现,其中包括使用FOR XML PATH子句和CONCAT函数。我们将深入探讨这些方法,并结合提供的示例进行解释。 首先,`FOR XML PATH('')` 是SQL Server中用于生成XML的一种方式,但在...
在对SQL Server系统执行入侵测试或者更高级别的安全审计时,有一种测试不应该被忽略,那就是SQL Server密码测试。这一点看起来显而易见,但是很多人都会忽略它。 SQL Server密码破解工具简介 使用XML在SQL ...
支持 MS SQL 2005 之前的版本 不支持 sql 2008 介绍 Log Explorer主要用于对MSSQLServer的事物分析和数据恢复。你可以浏览日志、导出数据、恢复被修改或者删除的数据(包括执行过update,delete,drop和truncate语句的...
4. **性能指标**:SQLIO输出的结果包括每秒I/O次数(IOPS)、吞吐量(MB/s)以及延迟(ms),这些指标有助于分析磁盘性能瓶颈,比如磁盘响应速度慢、I/O吞吐量低等。 5. **解读结果**:理解SQLIO的输出报告是关键,...
为了避免出现此类问题,您必须在安装有 SQL Server Express 的服务器中完全启用 MS DTC 服务。 若要完全启用 MS DTC,请执行下列操作: 在“控制面板”中,打开“管理工具”,再双击“组件服务”。 在左窗格的...
### VC_中连接Oracle数据库的几种方法 #### 引言 随着信息技术的不断发展,数据库管理系统在各类信息系统中的地位越来越重要。Oracle数据库作为一种广泛使用的数据库系统,以其强大的功能、优秀的性能及高安全性...
为了进一步优化查询性能,可以考虑以下几种方法: 1. **更改聚簇索引**:基于查询模式,重新评估并选择更合适的字段作为聚簇索引。例如,如果`Data1`和`DTAt`是常用的查询条件,可以考虑将这两个字段作为组合聚簇...
- **MS SQL Server 2000**:使用`TOP`关键字。 - **MS SQL Server 2005**:使用`OFFSET`和`FETCH NEXT`。 - **Oracle**:使用`ROWNUM`。 - **DB2**:使用`FETCH FIRST`。 **4.5 抑制数据重复** - 使用`DISTINCT`...
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和后台进程,这种启动...
本篇文章将深入探讨几种在ASP.NET环境中导出Excel数据的方法,包括它们的工作原理、优缺点以及适用场景。 #### 方法一:引用COM组件 这种方法通过直接调用Excel COM组件,将数据从DataTable导入至Excel单元格,并...
首先,JOIN操作主要有几种类型,包括INNER JOIN、LEFT JOIN (或 LEFT OUTER JOIN)、RIGHT JOIN (或 RIGHT OUTER JOIN)以及FULL JOIN (或 FULL OUTER JOIN)。在描述中提到的"inner join"是指INNER JOIN,这是最常见的...
对于 MS SQL SERVER,它能提供较为完善的审计功能,用来监视各用户对数据库施加的动作。 数据库加密是指将数据用密文形式存储或传输的手段保证高敏感数据的安全,这样可以防止那些企图通过不正常途径存取数据的行为...