您的位置: 首页-> 电脑文摘-> 数据库类-> MS SQL-> 正文

SQL排名与交叉
作者佚名 来源InterNet 加入时间:2007-1-26

--只用一句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)  



[文章录入员:nancy]

相关文章
  • 关于SQL语句中的引号问题(VB&VBScript)
  • 如何用SQL数据支持XML
  • 标准查询语法的SQL语句
  • 如何让你的SQL运行得更快
  • 精妙SQL语句
  • ASP.NET中如何防范SQL注入式攻击
  • SQL的基本操作
  • 相关软件:
  • 自学 PHP、MySQL和Apache
  • 轻松搞定 SQL Server 2000程序设计
  • SQL Server 2000菜鸟进阶
  • SQL Server 2000 看图教程
  • SQL Server 2000 开发者指南
  • SQL Server 2000 超级管理手冊
  • PostgreSQL 实用实例参考
  • PostgreSQL 2nd Edition
  • Oracle 官方文档CHM合集-SQL参考手册
  • MySQL中文参考手册
  • ::PCBOOKCN'ADS::


    ::MS SQL::
    ACCESS
    MS SQL
    MySQL
    Oracle
    Foxpro
    PowerBuilder
    Sybase
    其它
    ::阅读排行::
    ·SQL Server 2000中...
    ·Visual C#的SQL Se...
    ·SQL 语法参考手册
    ·解SQL Server“数据库维...
    ·精妙SQL语句
    ·标准查询语法的SQL语句
    ·Hibernate:利用配置文件...
    ·建立JDBC数据库连接实例解析
    ·SQL Server2000数据...
    ·ASP.NET中如何防范SQL注...