作者Antzzz (减肥中请勿喂食)
看板Database
标题Re: [SQL ] 同一群资料给同一个编号
时间Fri Mar 27 18:37:06 2009
※ 引述《fishfish0000 (小鱼仔~)》之铭言:
: [MS-SQL]...
: 如题,想请教该怎麽作?
: 我已经先下下列的指令...
: select 日期 ,count (日期) as 次数 FROM [TableName]
: GROUP BY 日期
: ORDER BY 日期
: 产生的结果摘要如下:
: 日期 次数
: -------------------------------------------------- -----------
: 20070730 20
: 20070731 18
: 20070801 20
: 20070802 22
: 20070803 20
: 20070806 14
: 20070807 14
: 20070808 16
: 想在TableName中,多加一个栏位。属於同一天的,多一个编号
: ex:
: 编号 日期 things
: 1 20070730 a
: 1 20070730 b
: 2 20070731 c
: 爬文过,好像都是说自动编号的。
: 请高手们指导…感谢
传统上的做法得去数日期小於自己的有几笔
这个例子得用三、四层subquery
SQL 2005的话
有rank()及row_number()函数可用
rank()的用法:
select rank() over (order by 日期), 日期, things
from [TableName]
不过这样会变成
编号 日期 things
1 20070730 a
1 20070730 b
3 20070731 c
row_number()的用法:
select B.编号, A.日期, A.things
from [TableName] A
inner join (
select row_number() over (order by 日期) 编号, 日期
from
(
select distinct 日期
from [TableName]
) C
)
可以成功做出
编号 日期 things
1 20070730 a
1 20070730 b
2 20070731 c
我觉得若没有很在乎编号跳号
还是用rank()就好了,查询式简单很多
如果rank()跟row_number()都不能用
那就稍稍地麻烦了
可参考原Po下方的推文文章来写
很适合拿来做SQL的考题orz
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.120.54.145