De eenvoudigste (en waarschijnlijk meest efficiënte) benadering is het gebruik van ROW_NUMBER() :
SELECT [Date], Code, [Count] = ROW_NUMBER() OVER (PARTITION BY Code ORDER BY [Date])
FROM dbo.YourTableName
ORDER BY [Date];
Voor de lol kun je het ook op deze manier oplossen in SQL Server 2012. Als Date is uniek:
SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
RANGE UNBOUNDED PRECEDING)
FROM dbo.YourTable
ORDER BY [Date];
Of eenvoudiger:
SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date])
FROM dbo.YourTable
ORDER BY [Date];
Als Date is niet uniek, en als je geen banden wilt (hetzelfde aantal voor identieke combinaties van datum+code), moet je de duurdere ROWS gebruiken , die op de spool op de schijf gebruikt:
SELECT [Date], Code, [Count] = COUNT(*) OVER (PARTITION BY Code ORDER BY [Date]
ROWS UNBOUNDED PRECEDING)
FROM dbo.YourTable
ORDER BY [Date];
U kunt elk van deze opties op uw tafel proberen om te zien hoe de uitvoering is.