declare @BenchTest as table(ID int Identity(1,1), PartNumber int, PartName varchar(10), TestDate datetime default getdate());insert into @BenchTest(PartNumber, PartName)values(1,'A'),(2,'B'),(3,'C'),(4,'D'),(1,'A'),(2,'B'),(3,'C'),(4,'D'),(1,'A'),(2,'B'),(3,'C'),(4,'D'),(1,'A'),(2,'B')select ID, PartNumber, PartName, ROW_NUMBER()Over(Partition by PartNumber Order by (Select Null)) CycleNum, count(*)Over(Partition by PartNumber) TotalCycle, TestDatefrom @BenchTestorder by PartNumber
DECLARE @BenchTest TABLE (ID INT IDENTITY ,PartNumber INT ,PartName VARCHAR(10) ,TestDate DATETIME);INSERT INTO @BenchTest(PartNumber, PartName, TestDate)VALUES(1,'A','2012-01-01 11:00'),(2,'B','2012-01-01 12:00') ,(3,'C','2012-01-01 13:00'),(4,'D','2012-01-01 14:00') ,(1,'A','2012-01-02 12:00'),(2,'B','2012-01-02 13:00') ,(3,'C','2012-01-02 14:00'),(4,'D','2012-01-01 15:00') ,(1,'A','2012-01-03 12:00'),(2,'B','2012-01-03 13:00') ,(3,'C','2012-01-03 15:00'),(4,'D','2012-01-01 15:00') ,(1,'A','2012-01-04 12:00'),(2,'B','2012-01-04 12:00')SELECT ID ,PartNumber ,PartName ,CycleNum=ROW_NUMBER() OVER (PARTITION BY PartNumber ORDER BY ID) ,TotalCycle=COUNT(*)Over(Partition by PartNumber) ,TestDateFROM @BenchTestORDER BY PartNumber