光关注股市了,很久没看SQL了,有个简单问题了,现在搞不了了...

netcup 2007-08-30 10:45:23
如何给SQL查询的结果加上行号?查询出来100个,行号就显示1到100?
我直接用select id=identity(1,1),col from table结果提示必须是SELECT INTO 才能用IDENTITY.
还有什么办法,在查询里给结果集加上行号?
...全文
156 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
netcup 2007-08-31
  • 打赏
  • 举报
回复
呵呵,谢谢大家,临时表这个我知道,只是想知道直接一个语句可能不
Limpire 2007-08-30
  • 打赏
  • 举报
回复
哈哈哈,还是潇洒兄负责任
dawugui 2007-08-30
  • 打赏
  • 举报
回复
--以下为排名(序号)的计算方法.
表jh03有下列数据:
name score
aa  99
bb  56
cc  56
dd  77
ee  78
ff  76
gg  78
ff  50

1. 名次生成方式1,Score重复时合并名次
SELECT * , Place=(SELECT COUNT(DISTINCT Score) FROM jh03 WHERE Score >= a.Score)
FROM jh03 a
ORDER BY Place
结果
Name Score Place
---------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 3
ff 76.00 4
bb 56.00 5
cc 56.00 5
ff 50.00 6

2. 名次生成方式2 , Score重复时保留名次空缺
SELECT * , Place=(SELECT COUNT(Score) FROM jh03 WHERE Score > a.Score) + 1
FROM jh03 a
ORDER BY Place
结果
Name Score Place
--------------- ----------------- -----------
aa 99.00 1
ee 78.00 2
gg 78.00 2
dd 77.00 4
ff 76.00 5
bb 56.00 6
cc 56.00 6
ff 50.00 8
dawugui 2007-08-30
  • 打赏
  • 举报
回复
如果有一列能区分大小,如id

SELECT * , xh=(SELECT COUNT(id) FROM tb WHERE id < a.id) + 1
FROM tb a
ORDER BY xh

如果没有任何一列能区分大小.

则使用
select id=identity(int,1,1) , * into temp from tb
select * from temp order by id
Limpire 2007-08-30
  • 打赏
  • 举报
回复
SQL2K通过临时表:

select id=identity(1,1),col into #temp from table
select * from #temp

27,582

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧