我正在使用SSMS 17.4。我需要添加一个使用Row_Number()函数的新列。但是这种语法似乎无效
我尝试了三种不同的方式,但没有一种方法可行。
ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL AS (ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]));
ALTER TABLE MYDB.[dbo].[Table1]
ADD ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]) INT NOT NULL AS Rn;
ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);
我也在此链接上尝试了以下建议
https://ss64.com/sql/table_a_computed.html
ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ADD Rn AS ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);
您要做的是为表创建一个计算列,每当插入,删除或更新记录时,该列可能会更改许多其他记录。考虑到重要的性能影响,我认为任何SQL引擎都不会允许这样做。
我建议创建一个具有您要查找的行号列的视图,然后像表一样引用该视图。在这种情况下,只要引用视图,就会动态计算它。