网上文摘 小说 Flash游戏 最近更新 下载排行 资源分类 下载指南
经典编程资源 精彩不容错过
设为首页
加入收藏
联系我们
当前位置:Delphi园地技巧文章数据库编程 → SQL排名与交叉
SQL排名与交叉
日期:2007年1月1日 作者:chizeng 人气: 查看:[大字体 中字体 小字体]

--只用一句SQL计算名次,允许并列
--方法改变世界
--create table sc(name varchar(50),subj varchar(50),mark float,ord int)
--参数:
--sc   表名
--name 人名
--mark 分数
--ord  名次
--1、当名次合并后,下一名次按人数加(在她前面有多少人,名次是不连续的)
update sc set ord=(select count(*)+1 from sc B where B.mark>sc.mark)
--2、当名次合并后,下一名次加1(名次总是连续的)
update sc set ord=(select count(*) from (select distinct mark from sc) as distmark where distmark.mark >=sc.mark)

--不用循环,简单搞定SQL交叉表
--参数同上
create proc usp_cross
as
declare @s varchar(8000)
select @s='select name'
select @s=@s+',sum(case subj when '''+subj+''' then mark end) as ['+subj+']'
       from (select distinct subj from sc) as distSj
select @s=@s+' from sc group by name'
print @s
exec(@s)  

(出处:DelphiFans.com)

相关文章:
·SQLServer技巧集
·DELPHI存取JPEG文件到SQL Server数据库
·用Delphi编程访问SQLServer数据库
·SQL语言基础
·直接用SQL语句把DBF导入SQLServer
·sqlserver中取表名,列名..
·用SQL语句创建Access表
·根据数据字典表定义的表结构,生成创建表的SQL语句
·SQL编程命名规范
·SQL的锁机制
 → 特别推荐
 → 热点TOP10
关于我们 | 广告服务 | 发布资源 | 联系站长 Copyright © 2002-2006 Delphi园地 All Rights Reserved