2016-08-22 5 views
0

Ich verwende SQL Server 2008 R2. Ich habe Tabelle EmployeePurcheses mit den folgenden Struktur und Beispieldaten genannt:row_number Über Partition

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

Was ich versuche zu tun, die Arbeitswoche Liste dieser Beschäftigung des Mitarbeiters in jedem Datum, bis zu dem Feld Datum geordnet. So wird die Ausgabe wie folgt aussehen:

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

ich bestimmt Partitionierung der Daten verwenden Sie die folgende Abfrage verwenden, aber es ist fehlgeschlagen. Vielen Dank im Voraus.

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

'Ich wollte Partitionierung der Daten verwenden Sie die folgende Abfrage verwenden, aber es failed.', was der Fehler ist – TheGameiswar

Antwort

1

Nach Ihr Ergebnis müssen Sie DENSE_RANK() ohne Partitionierung:

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