MSSQL - row_number () в представлениях отображается неожиданно - PullRequest
0 голосов
/ 12 июня 2018

Мне нужно получить номер строки из представления, не меняющего основной выбор, но он отображает общую таблицу округлений, вставленную в выбранный номер строки.

Вот значения в таблице1:

field1
---------
aa
ab
ba
bb
bc
ca
cb
cc

Я создал вид, подобный следующему:

select field1, row_number() OVER (ORDER BY field1) as rowno
from table1

, но выбор отображает общее количество строк:

select *
from myview 
where field1 like 'c%'


field1      rowno
-----------------
ca          6
cb          7
cc          8

вместо

field1      rowno
-----------------
ca          1
cb          2
cc          3

любой шансправильно?

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Полагаю, вы не поняли номер строки прямо здесь.Если вам нужно, чтобы номер строки начинался с 1 каждый раз, когда вы выбираете из этого представления, вам не следует выбирать столбец row_number, уже сгенерированный в операторе select представления, вместо этого вы должны написать свою часть ROW_NUMBER () в условиив каждом операторе выбора, который вы запускаете против представления.Вам нужно что-то вроде этого:

SELECT fields1, ROW_NUMBER() OVER (ORDER BY field1) as rowno
FROM <viewname>
WHERE fields1 LIKE 'C%';
0 голосов
/ 12 июня 2018

Тогда вам нужно subquery вместо:

select t.*
from (select field1, row_number() over (order by field1) as rowno
      from table1
     ) t
where field1 like 'c%';
...