row_number 过度分区
row_number Over Partition
我正在使用 SQL Server 2008 R2。我有 table 名为 EmployeePurcheses 的结构和示例数据:
EmployeeID Date Usd
1 2014-11-12 5
1 2014-11-18 9
1 2014-11-18 7
我想做的是在日期字段排序的每个日期中列出该员工就业的工作周。因此,输出将如下所示:
rn EmployeeID Date WW
1 1 2014-11-12 46
2 1 2014-11-18 47
2 1 2014-11-18 47
我打算使用以下查询对数据进行分区,但失败了。提前谢谢你。
select
rn = ROW_NUMBER() over (partition by DATEPART(ww, [Date]) order by
DATEPART(ww, [Date]))
,[EmployeeID ]
,Cast([Date] as date) as [Date]
,DATEPART(ww, [Date]) as WW
FROM EmployeePurcheses
Order by [Date] asc
根据您的结果,您需要 DENSE_RANK()
且没有分区:
WITH EmployeePurchases AS
(
SELECT * FROM (VALUES
(1, '2014-11-12', 5),
(1, '2014-11-18', 9),
(1, '2014-11-18', 7)) T(EmployeeID, Date, Usd)
)
select
rn = DENSE_RANK() over (order by DATEPART(WW, [Date]))
,[EmployeeID]
,Cast([Date] as date) as [Date]
,DATEPART(ww, [Date]) as WW
FROM EmployeePurchases
Order by [Date] asc
我正在使用 SQL Server 2008 R2。我有 table 名为 EmployeePurcheses 的结构和示例数据:
EmployeeID Date Usd
1 2014-11-12 5
1 2014-11-18 9
1 2014-11-18 7
我想做的是在日期字段排序的每个日期中列出该员工就业的工作周。因此,输出将如下所示:
rn EmployeeID Date WW
1 1 2014-11-12 46
2 1 2014-11-18 47
2 1 2014-11-18 47
我打算使用以下查询对数据进行分区,但失败了。提前谢谢你。
select
rn = ROW_NUMBER() over (partition by DATEPART(ww, [Date]) order by
DATEPART(ww, [Date]))
,[EmployeeID ]
,Cast([Date] as date) as [Date]
,DATEPART(ww, [Date]) as WW
FROM EmployeePurcheses
Order by [Date] asc
根据您的结果,您需要 DENSE_RANK()
且没有分区:
WITH EmployeePurchases AS
(
SELECT * FROM (VALUES
(1, '2014-11-12', 5),
(1, '2014-11-18', 9),
(1, '2014-11-18', 7)) T(EmployeeID, Date, Usd)
)
select
rn = DENSE_RANK() over (order by DATEPART(WW, [Date]))
,[EmployeeID]
,Cast([Date] as date) as [Date]
,DATEPART(ww, [Date]) as WW
FROM EmployeePurchases
Order by [Date] asc