Как создать rownum в SQL Server - PullRequest
       1

Как создать rownum в SQL Server

3 голосов
/ 16 декабря 2010

Ниже приведен пример, который я хочу сделать:

declare @table table(col1 varchar(10),col2 varchar(10));
insert into @table(col1,col2) values ('a1','5340');
insert into @table(col1,col2) values ('a1','3340');
insert into @table(col1,col2) values ('a1','9185340');
insert into @table(col1,col2) values ('b1','1110');

Вот таблица и пример данных.Теперь, как я хочу получить результат, как показано ниже:

select * from @table

col1    col2      seq
a1  5340       1
a1  3340       2
a1  9185340    3
b1  1110       1

Если вы заметили здесь, SEQ сбрасывается обратно к 1 для нового значения COL1.И я не хочу менять порядок значений в COL2.то есть.значение 5340 должно быть 1 и т. д.

Это только примерные данные.Но реальные данные поступают из другой таблицы, поэтому значения не фиксируются только в 4 строках.

Любая помощь приветствуется.Спасибо

Ответы [ 2 ]

4 голосов
/ 16 декабря 2010

Просто используйте обычный столбец IDENTITY в качестве SEQ:

declare @table table(raw_seq int IDENTITY(1,1), col1 varchar(10),col2 varchar(10));

, затем используйте

ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY raw_seq) AS seq

, чтобы получить желаемое значение.

1 голос
/ 16 декабря 2010

Используйте аналитическую функцию row_number().

select
  col1,
  col2,
  row_number() over (partition by col1 order by col1) seq
from
  table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...