我在select语句中有以下行:
cast (row_number( ) OVER ( ORDER BY cs.OrgId ) AS int) AS rowId
有人可以确认我是否理解这一点吗?
按Org Id排序并创建一个新列rowId作为int,其中包含订单中orgid位置的值?
这听起来不错吗?
答案 0 :(得分:2)
不,这不完全是你所说的。函数row_number() OVER (ORDER BY [order])
返回一个值,该值表示如果按指定顺序排序行将占用的位置。
这种细微差别意味着几件事:
row_number()
函数row_number()
(或任何其他窗口函数)的结果来过滤,分组或以任何方式使用它 cast
部分仅从BIGINT
转换为INT
。
“创建新列”取决于您使用窗口函数的位置。例如,您可以在where
子句中使用它,在这种情况下,它根本不会创建新列。
您可以阅读有完整说明的documentation on OVER clause和几个示例。另请参阅ranking functions docs。