在网上找了好多资料,才发现有一种是我想要的。但是语句效率不怎样。如下:
----------
我有一张数据表,结构如下:
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
--------
以上能实现我想要的,但就是数据量大了,会慢,哪位大虾能优化一下呢?还是说能用另外的方式去实现呢?
----------
我有一张数据表,结构如下:
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
--------
以上能实现我想要的,但就是数据量大了,会慢,哪位大虾能优化一下呢?还是说能用另外的方式去实现呢?
XH=ROW_NUMBER() OVER (PARTITION BY local ORDER BY name)-1
from List B ORDER BY XH2005以上
就在上面的例子后面再加上一列
我的意思是,比如说 “河南”这个我想排第一,我在河南这个字段后面加上“100”,100是最大的,则
name local age
张三 河南 10
李四 河北 20
王五 山东 18马六 河南 16
刘七 河北 22
赵八 山东 25