2016-08-22 47 views
0

我正在使用SQL Server 2008 R2。我有以下结构和样本数据表称为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 
+0

'我打算用使用以下查询分区中的数据,但它failed.'什么是错误 – TheGameiswar

回答

1

根据您的结果需要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