| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1070 人关注过本帖, 1 人收藏
标题:怎样在查询结果中对记录编号
只看楼主 加入收藏
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
结帖率:100%
收藏(1)
 问题点数:0 回复次数:9 
怎样在查询结果中对记录编号
这里有一个表:
姓名   序号    领用品
张三     1      电脑
李四     2      电脑
张三     3      工具箱
李四     4      打印机
张三     5      办公桌
张三     6       转椅
李四     7      电脑
李四     8      扫描仪
李四     9      办公桌
李四     10     转椅
张三     11     管子钳
李四     12     计算尺

我想在查询的结果集中重新对序号编号,如下:
姓名   序号    领用品
张三     1      电脑
张三     2      工具箱
张三     3      办公桌
张三     4       转椅
张三     5     管子钳
李四     1      电脑
李四     2      打印机
李四     3      电脑
李四     4      扫描仪
李四     5      办公桌
李四     6     转椅
李四     7     计算尺

我做了好久,始终出不来,哪位可以帮帮忙,先谢谢了!
搜索更多相关主题的帖子: 张三 李四 扫描仪 打印机 
2008-05-21 16:58
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
用临时表加Identity函数
收到的鲜花
  • zougonghua2008-05-22 11:22 送鲜花  3朵   附言:我很赞同
2008-05-22 08:25
wuhui5201717
Rank: 1
来 自:湖南省郴州市桂阳县
等 级:新手上路
帖 子:42
专家分:0
注 册:2008-5-9
收藏
得分:0 
select 姓名=name,编号=identity,领用品
from 表 group by name
2008-05-22 08:43
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
[bo]以下是引用 [un]wuhui5201717[/un] 在 2008-5-22 08:43 的发言:[/bo]

select 姓名=name,编号=identity,领用品
from 表 group by name


还是出不来,  报错:','附近有语法错误

2008-05-22 09:45
zougonghua
Rank: 1
等 级:新手上路
帖 子:163
专家分:0
注 册:2008-4-1
收藏
得分:0 
select 姓名,identity(int,1,1) as 序号,领用品 INTO #lsTable
from 表 order by 姓名

DELETE 表

INSERT INTO 表
  SELECT * FROM #lsTable

DROP TABLE #lsTable
2008-05-22 11:18
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
[bo]以下是引用 [un]zougonghua[/un] 在 2008-5-22 11:18 的发言:[/bo]

select 姓名,identity(int,1,1) as 序号,领用品 INTO #lsTable
from 表 order by 姓名

DELETE 表

INSERT INTO 表
  SELECT * FROM #lsTable

DROP TABLE #lsTable


谢谢您很详细的解答.
只是还是有个问题, 序号是从第一条记录编到最后一条记录的, 而我想要的是每个人都从1开始编号.

2008-05-22 12:04
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
Create TABLE #ls1(姓名  VARCHAR(10),序号  INT,领用品  VARCHAR(20))
INSERT INTO #ls1 VALUES('张三',     1      ,'电脑')
INSERT INTO #ls1 VALUES('李四',     2      ,'电脑')
INSERT INTO #ls1 VALUES('张三',     3      ,'工具箱')
INSERT INTO #ls1 VALUES('李四',     4      ,'打印机')
INSERT INTO #ls1 VALUES('张三',     5      ,'办公桌')
INSERT INTO #ls1 VALUES('张三',     6      ,' 转椅')
INSERT INTO #ls1 VALUES('李四',     7      ,'电脑')
INSERT INTO #ls1 VALUES('李四',     8      ,'扫描仪')
INSERT INTO #ls1 VALUES('李四',     9      ,'办公桌')
INSERT INTO #ls1 VALUES('李四',     10     ,'转椅')
INSERT INTO #ls1 VALUES('张三',     11     ,'管子钳')
INSERT INTO #ls1 VALUES('李四',     12     ,'计算尺')


SELECT 姓名,IDENTITY(INT,1,1) as 序号,领用品
INTO #lsTable
FROM #ls1 ORDER BY 姓名

SELECT 姓名,(序号 - ISNULL((SELECT Max(a.序号) FROM #lsTable a WHERE a.序号<#lsTable.序号 AND a.姓名<>#lsTable.姓名),0)) AS 序号,领用品
FROM #lsTable

DROP TABLE #ls1
DROP TABLE #lsTable
2008-05-22 14:38
happynight
Rank: 8Rank: 8
等 级:贵宾
威 望:15
帖 子:807
专家分:760
注 册:2008-4-26
收藏
得分:0 
改进版:
SELECT 姓名,(序号 - (SELECT MIN(a.序号) -1 FROM #lsTable a WHERE a.姓名=#lsTable.姓名)) AS 序号,领用品
FROM #lsTable
从理论上来说 效率要高点 程序的可读性也要好点
2008-05-22 14:57
fangchengli
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2007-1-18
收藏
得分:0 
不错,
2008-05-22 17:06
小水滴
Rank: 1
等 级:新手上路
威 望:2
帖 子:227
专家分:0
注 册:2006-8-22
收藏
得分:0 
谢谢happynight ,语句非常漂亮,简洁而易懂,向你学习!

2008-05-25 08:21
快速回复:怎样在查询结果中对记录编号
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033223 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved