SQL脚本自动递增,具体取决于列值

时间:2013-12-04 00:09:15

标签: sql sql-server excel auto-increment

这可能很棘手。我有一个xlsx文件,其中包含一组具有相似列值的行。问题是客户端没有为我提供另一列的正确值(该列不存在)。 我需要根据另一列中的值自动递增新列。当列的值发生变化时,递增的var需要返回到0.

EX:

Current
C1 | C2 | 
1  | A  |
2  | A  |
3  | A  |
4  | B  |
5  | B  |

Desired
C1 | C2 | C3 (NEW)
1  | A  | 0
2  | A  | 1
3  | A  | 2
4  | B  | 0
5  | B  | 1

是否可以通过SQL执行此操作?有没有更好的方法在Excel或Access中执行此操作?

1 个答案:

答案 0 :(得分:5)

使用SQL非常有用,这里是SQL Fiddle,这是小提琴的内容:

CREATE TABLE a
(
  C1 INT,
  C2 VARCHAR(10)
)

GO

INSERT INTO a VALUES (1, 'A')
INSERT INTO a VALUES (2, 'A')
INSERT INTO a VALUES (3, 'A')
INSERT INTO a VALUES (4, 'B')
INSERT INTO a VALUES (5, 'B')

SELECT C1, C2,
  ROW_NUMBER() OVER (PARTITION BY C2 ORDER BY C1) - 1 AS C3
FROM a