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