问题描述
我正在尝试向视图添加一个静态唯一值列,该列保留其位置并且在调用视图时不会更改。
这个想法是在视图中有一个唯一标识符,我知道我们可以使用连接表的主键之一作为唯一标识符,但在我的情况下,该主键列有重复值,因为它与多个表连接。
我尝试了 Rand()、NEWID()、ABS(CHECKSUM(NEWID())) 它们确实达到了目的,但不是完全地。 每当调用视图时,它们都有不同的唯一值,我需要一个唯一值来表示一行并且在调用视图时不会更改。
期待有用的回复。
问候, 阿里纳瓦兹
解决方法
我不确定您所说的“保持其位置并且在调用视图时不会改变”是什么意思,因为基础数据可能会发生变化。
但是,如果您有一组唯一定义每一行的列,那么 row_number()
应该按照您的意愿行事:
row_number() over (order by col1,col2,col3)
列唯一标识每一行很重要。通常,这些将是基础表的主键。