首页 > 解决方案 > row_number 函数的计算列公式

问题描述

我正在尝试为计算列找到一个公式,该公式将返回与ROW_NUMBER()函数相同的结果。因为我无法使用该ROW_NUMBER()功能并将结果保存在表格中。我有一张如下表;

ID  YEAR  
1   2018      
2   2018      
3   2019      
4   2019      
5   2020      
6   2018      
7   2019      

我想要一个公式来计算和分配取决于年份的行数,如下所示;

ID     YEAR     COMPUTED COLUMN
1      2018     1
2      2018     2  
3      2019     1  
4      2019     2  
5      2020     1  
6      2018     3  
7      2019     3  

标签: sqlsql-serverwindow-functionscalculated-columnssql-view

解决方案


我正在尝试为计算列找到一个公式,该公式将返回与 ROW_NUMBER() 函数相同的结果。

您只是不能在计算列中使用窗口函数;窗口函数对一系列行(称为窗口框架)进行操作,而计算列仅对其所属的行具有可见性。

我无法使用 ROW_NUMBER() 函数并将结果保存在表格中

虽然这在技术上是可行的,但我不建议这样做。这是派生信息,可以在需要时即时计算。您可以改用视图:

create view myview
as
select
    id, 
    year,
    row_number() over (partition by year order by id) rn
from mytable

推荐阅读