asp精妙的SQL语句例子(3)

时间:2008-03-04 17:42:00 

9.4.查询数据的最大排序问题(只能用一条语句写)

CREATE TABLE hard (qu char (11) ,co char (11) ,je numeric(3, 0))
insert into hard values ('A','1',3)
insert into hard values ('A','2',4)
insert into hard values ('A','4',2)
insert into hard values ('A','6',9)
insert into hard values ('B','1',4)
insert into hard values ('B','2',5)
insert into hard values ('B','3',6)
insert into hard values ('C','3',4)
insert into hard values ('C','6',7)
insert into hard values ('C','2',3)

要求查询出来的结果如下:

qu co je
----------- ----------- -----
A 6 9
A 2 4
B 3 6
B 2 5
C 6 7
C 3 4

就是要按qu分组,每组中取je最大的前2位!!

而且只能用一句sql语句!!!

select * from hard a where je in (select top 2 je from hard b where a.qu=b.qu order by je)

9.5.求删除重复记录的sql语句?

怎样把具有相同字段的纪录删除,只留下一条。
例如,表test里有id,name字段
如果有name相同的记录 只留下一条,其余的删除。
name的内容不定,相同的记录数不定。
有没有这样的sql语句?
==============================
A:一个完整的解决方案:

将重复的记录记入temp1表:

select [标志字段id],count(*) into temp1 from [表名]
group by [标志字段id]
having count(*)>1

2、将不重复的记录记入temp1表:

insert temp1
select [标志字段id],count(*) from [表名]
group by [标志字段id]
having count(*)=1

3、作一个包含所有不重复记录的表:

select * into temp2 from [表名]
where 标志字段id in(select 标志字段id from temp1)

4、删除重复表:

delete [表名]

5、恢复表:

insert [表名]
select * from temp2

6、删除临时表:

drop table temp1
drop table temp2

B:

create table a_dist(id int,name varchar(20))
insert into a_dist values(1,'abc')
insert into a_dist values(1,'abc')
insert into a_dist values(1,'abc')
insert into a_dist values(1,'abc')
exec up_distinct 'a_dist','id'
select * from a_dist
create procedure up_distinct(@t_name varchar(30),@f_key varchar(30))
--f_key表示是分組字段﹐即主鍵字段
as
begin
declare @max integer,@id varchar(30) ,@sql varchar(7999) ,@type integer
select @sql = 'declare cur_rows cursor for select '+@f_key+' ,count(*) from ' +@t_name +' group by ' +@f_key +' having count(*) > 1'
exec(@sql)
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
select @type = xtype from syscolumns where id=object_id(@t_name) and name=@f_key
if @type=56
select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+ @id
if @type=167
select @sql = 'delete from '+@t_name+' where ' + @f_key+' = '+''''+ @id +''''
exec(@sql)
fetch cur_rows into @id,@max
end
close cur_rows
deallocate cur_rows
set rowcount 0
end
select * from systypes
select * from syscolumns where id = object_id('a_dist')

 

10.1. 行列转换--普通

假设有张学生成绩表(CJ)如下
Name Subject Result
张三 语文 80
张三 数学 90
张三 物理 85
李四 语文 85
李四 数学 92
李四 物理 82

想变成
姓名 语文 数学 物理
张三 80 90 85
李四 85 92 82


declare @sql varchar(4000)
set @sql = 'select Name'
select @sql = @sql + ',sum(case Subject when '''+Subject+''' then Result end) ['+Subject+']'
from (select distinct Subject from CJ) as a
select @sql = @sql+' from test group by name'
exec(@sql)

标签:sql,邮局,selsect,表
0
投稿

猜你喜欢

  • 详解python 降级到3.6终极解决方案

    2022-07-07 20:50:26
  • 深入理解python中的闭包和装饰器

    2023-03-20 06:27:48
  • 制作Dreamweaver活动菜单条

    2008-10-03 20:59:00
  • windows+vscode安装paddleOCR运行环境的步骤

    2021-05-09 06:12:26
  • 教你使用Python画圣诞树做浪漫的程序员

    2023-03-19 21:39:02
  • 使用PHP获取当前url路径的函数以及服务器变量

    2023-10-31 02:31:34
  • javaScript让文本框内的最后一个文字的后面获得焦点实现代码

    2024-04-16 08:57:55
  • javascript在myeclipse中报错的解决方法

    2024-04-22 22:41:55
  • Python利用matplotlib实现制作动态条形图

    2021-06-11 05:29:15
  • Asp 操作Cookies(包括设置[赋值]、读取、删除[设置过期时间])

    2011-03-10 11:06:00
  • Python图像处理库PIL的ImageDraw模块介绍详解

    2022-06-29 04:18:20
  • 实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250

    2021-04-26 21:27:11
  • MYSQL中varchar和TEXT的相关问题详析

    2024-01-23 00:58:42
  • pandas 空数据处理方法详解

    2022-08-18 00:29:01
  • python读取excel数据绘制简单曲线图的完整步骤记录

    2022-04-27 10:52:18
  • Python脚本修改阿里云的访问控制列表的方法

    2022-06-19 10:31:18
  • Python可视化学习之seaborn绘制矩阵图详解

    2023-02-27 09:25:36
  • MySQL 逻辑备份与恢复测试的相关总结

    2024-01-19 14:19:20
  • 在Vue-cli里应用Vuex的state和mutations方法

    2024-04-29 13:09:51
  • tornado捕获和处理404错误的方法

    2023-11-27 11:03:36
  • asp之家 网络编程 m.aspxhome.com