注册 登录
编程论坛 SQL Server论坛

几个排序案例

fqbnet2008 发布于 2007-08-17 09:23, 559 次点击

经典排序案例

1。表结构如下:
create Table List
(
name CHAR(20),
local CHAR(20),
age CHAR(20)
)

返回的结果集格式为:
按地区排序,但是地区按枚举输出,
每个地区显示一条记录,按地区循环显示,下面只列出了3个地方作例子。
(各地区人数不定也不等,如果该地方没有人可以填充了,就跳过去不显示)
如:
name local age
张三 河北 10
李四 河南 20
王五 山东 18

马六 河北 16
刘七 河南 22
赵八 山东 25
. . .
. . .
. . .
Select Name,Local,Age,
XH=(Select Count(*) from List A where A.Local=B.Local and A.Name<B.Name)
from List B order by XH,Local

2。人員名稱 外出時間 外出趟次
張三 2000-01-01 10:01:01
張三 2000-01-01 13:01:01
張三 2000-01-01 12:01:01
張三 2000-01-02 09:01:01
張三 2000-01-02 15:01:01
張三 2000-01-02 16:01:01
李四 2000-01-01 10:01:01
李四 2000-01-01 11:01:01

目標要求:
人員名稱 外出時間 外出趟次 //記錄某人在某天的第幾次外出
張三 2000-01-01 10:01:01 1
張三 2000-01-01 13:01:01 3
張三 2000-01-01 12:01:01 2
張三 2000-01-02 09:01:01 1
張三 2000-01-02 15:01:01 2
張三 2000-01-02 16:01:01 3
李四 2000-01-01 10:01:01 1
李四 2000-01-01 11:01:01 2

select a.name,a.dt,(select count(name) from tablename
where name=a.name and year(dt)=year(a.dt) and month(a.dt) and day(dt)=day(a.dt) and dt<=a.dt) as ncount
from tablename a
order by a.dt

3.ID 名称
1 B
2 A
3 C
4 B
5 A
6 B
其中ID是主键,现在希望通过SQL查询得到以下结果
ID 名称 次数
1 B 1
2 A 1
3 C 1
4 B 2
5 A 2
6 B 3
其中"次数"是指以ID为顺序,名称是第几次出现。

Select id,名称,
(select count(id) from table1 where 名称=AAA.名称 and id<=AAA.id) as 次数
From table1 AAA

3 回复
#2
wudi2513142007-08-17 23:04

顶一下!

#3
fqbnet20082007-08-20 13:54
我觉得挺实用的,怎么没有人啊
#4
gugu07922007-08-20 16:01
恩不错!!!!!!!!
1