2016-08-22 2 views
0

J'utilise SQL Server 2008 R2. Je table appelée EmployeePurcheses avec la structure suivante et des échantillons de données:row_number Over Partition

EmployeeID Date Usd 
1  2014-11-12 5 
1  2014-11-18 9 
1  2014-11-18 7 

Ce que je suis en train de faire est de la liste de la semaine de travail de l'emploi de cet employé à chaque date ordonnée par le champ Date. Ainsi, la sortie ressemblera à ceci:

rn EmployeeID Date WW 
1 1  2014-11-12 46 
2 1  2014-11-18 47 
2 1  2014-11-18 47 

je comptais utiliser le partitionnement des données en utilisant la requête suivante, mais il a échoué. Merci d'avance.

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

'je comptais utiliser le partitionnement des données en utilisant la requête suivante mais il failed.' ce qui est l'erreur – TheGameiswar

Répondre

1

Selon votre résultat vous avez besoin DENSE_RANK() sans partage:

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