使用row_number过滤视图以生成序列号

时间:2019-09-18 11:27:24

标签: c# sql-server entity-framework linq filtering

我有这样的看法。

Create view RefStatus
as
select row_number() over(order by Inserted_On desc) Slno, Name,
Email_ID Email, Mobile_No Mobile, Status, Inserted_On ProfileCreatedOn from RefTable

现在

select  Slno, Name,
 Email,  Mobile, Status,  ProfileCreatedOn from RefStatus

很好,我得到了预期的序列号。但是当我尝试

select  Slno, Name,
 Email,  Mobile, Status,  ProfileCreatedOn from RefStatus where Status = 'In-Progress'

我的序列号无法正确生成。它仍然将我表的所有记录视为基本,并生成不正确的序列号。 如何单独为过滤的行生成序列号。

我知道这可以通过存储过程或为每种状态创建单独的视图来完成。有没有办法在同一个视图中做到这一点?原因是我需要使用实体框架和linq从C#调用此视图。

1 个答案:

答案 0 :(得分:2)

在视图中生成的ROW_NUMBER()不是动态的,即在过滤视图时它不会动态更改。

在查询中而不是在视图中使用ROW_NUMBER()

select  
    row_number() over(order by Inserted_On desc) SlNo, 
    Name,
    Email,  
    Mobile, 
    Status,  
    ProfileCreatedOn,
from RefStatus
where Status = 'In-Progress'