首页 > 解决方案 > MSSQL - 视图中的 row_number() 显示意外

问题描述

我需要从不更改主选择的视图中获取行号,但它显示了所选行编号的整体行号表。

这是表 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

有机会做对吗?

标签: sqlsql-serverviewsrow-number

解决方案


我猜你在这里没有得到行号的概念。如果每次从该视图中选择时都需要从 1 开始行号,则不应选择视图的 select 语句中已生成的 row_number 列,而是必须编写条件的 ROW_NUMBER() 部分在您针对视图运行的每个选择语句中。你需要这样的东西:

SELECT fields1, ROW_NUMBER() OVER (ORDER BY field1) as rowno
FROM <viewname>
WHERE fields1 LIKE 'C%';

推荐阅读