读书人

想问个SQL有关问题 高手快来啊

发布时间: 2012-12-16 12:02:32 作者: rapoo

想问个SQL问题 高手快来啊。。
就是我现在有一个表table1
单据号 日期 产品编码
1 11.1 a
1 11.2 a
1 11.3 b
2 11.1 a
2 11.2 c
3 11.1 b
4 11.1 c
5 11.1 a
5 11.2 c
5 11.3 b
6 11.1 a

然后我想增加一列叫做行号
就是如果单据号与上一个单据号相同
就+1
不同 就默认为1 这样子
应该怎么写啊??
[最优解释]
select *,ROW_NUMBER() over(partition by 单据号 order by 单据号)
from table1
[其他解释]


[其他解释]
不同默认为1是什么意思?最好把想要的结果贴出来,会更清晰点
[其他解释]

引用:
select *,ROW_NUMBER() over(partition by 单据号 order by 单据号)
from table1


你好 这样是可以解决了
但是如果我想默认为2 然后每次增加2 那又怎么办?
[其他解释]
引用:
不同默认为1是什么意思?最好把想要的结果贴出来,会更清晰点



单据号 行号 日期 产品编码
1 2 11.1 a
1 4 11.2 a
1 6 11.3 b
2 2 11.1 a
2 4 11.2 c
3 2 11.1 b
4 2 11.1 c
5 2 11.1 a
5 4 11.2 c
5 6 11.3 b
6 2 11.1 a

差不多可以理解为这样子?
这样子怎么解?
[其他解释]
select *,rm*2 from(select *,ROW_NUMBER() over(partition by 单据号 order by 单据号) rm
from table1)
或者
select *,ROW_NUMBER() over(partition by 单据号 order by 单据号)+ROW_NUMBER() over(partition by 单据号 order by 单据号) rm


from table1
[其他解释]
select *,ROW_NUMBER() over(partition by 单据号 order by 单据号)*2 as rowid
from table1
[其他解释]
select *,(ROW_NUMBER() over(partition by 单据号 order by 单据号))*2 as rowid
from table1
这样括起来 应该是对的
[其他解释]

引用:
select *,(ROW_NUMBER() over(partition by 单据号 order by 单据号))*2 as rowid
from table1
这样括起来 应该是对的


那那那 如果是 初始为2 每次增加1呢?????????
对不起啊。。。我新手问题多。。
[其他解释]
select *,(ROW_NUMBER() over(partition by 单据号 order by 单据号))+1 as rowid
from table1
[其他解释]
引用:
select *,(ROW_NUMBER() over(partition by 单据号 order by 单据号))+1 as rowid
from table1


谢谢你 我大概知道怎么做了
[其他解释]
null

读书人网 >SQL Server

热点推荐