日期:2014-05-17  浏览次数:20863 次

想问个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