我正在使用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_compened.html
ALTER TABLE MYDB.[dbo].[Table1]
ADD Rn INT NOT NULL ADD Rn AS ROW_NUMBER() OVER (PARTITION BY [MyColumn] ORDER BY [MyColumn]);
您要做的是为表创建一个计算出的列,该表每当记录插入,删除或更新时,可能会更改许多其他记录。我不认为任何SQL引擎都会考虑到重大性能的影响。
我建议创建一个视图,该视图具有您要查找的行号列,然后像表一样引用视图。在这种情况下,每当引用视图时,它将被动态计算。