【发布时间】:2019-05-01 11:39:04
【问题描述】:
我有一个 T-Sql 查询,它为每条记录生成一个随机数。我还想做的是添加 Rank 或 Row_Number 列
我已经尝试了 Rank 和 Row_Number,但是当我在 order by 子句中放入 int 时出现以下错误:
窗口函数、聚合和 NEXT VALUE FOR 函数不 支持整数索引作为 ORDER BY 子句表达式
SELECT TOP(4) PERCENT CONVERT(VARCHAR(10),Getdate(),103) RunDate
, EM.EmpCode 'Emp Code'
, D.DepotDepotDescription 'Depot'
, cast(rand(checksum(newid())) * 10 as decimal(8, 6)) [Random Number]
, rank() OVER (order by 100) Row
FROM ttimport.EmployeeMaster EM
LEFT OUTER JOIN ttimport.PayrollFrequency PF ON EM.FrequencyDesc = PF.DescCode
LEFT OUTER JOIN ttimport.Departments DPT ON EM.DepartmentName = DPT.DescCode
LEFT OUTER JOIN ttimport.Depot D ON EM.DepotDepotDescription = D.DescCode
ORDER BY 4
【问题讨论】:
-
order by 100实际上根本不进行任何排序,因为您是按静态值排序的。您想在这里实现什么目标?
标签: tsql