我写" complex "已经有一段时间了。
我有一个表Attendance
与列
BranchID (int)
SignDate (DateTime)
EmployeeID (nvarchar)
每个Branch
有几十名员工。
我需要的是每天每个分行最早的SignDate
和EmployeeID
签名的列表。
我尝试了几种方法,但都没有成功。
我正在使用SQL Server.
谢谢。
;WITH src AS
(
SELECT BranchID, EmployeeID, SignDate,
rn = ROW_NUMBER() OVER (
PARTITION BY BranchID, CONVERT(date, SignDate)
ORDER BY SignDate, EmployeeID -- break ties
)
FROM dbo.Attendance
-- some kind of WHERE maybe
)
SELECT BranchID, EmployeeID, SignDate
FROM src
WHERE rn = 1
ORDER BY BranchID, SignDate;
参见每组检索n行。