[COLOR=green]-- Sample Data
[/color][COLOR=blue]Declare[/color] @Temp [COLOR=blue]Table[/color]([[COLOR=blue]Key[/color]] [COLOR=blue]varchar[/color](10), [COLOR=blue]Date[/color] [COLOR=#FF00FF]DateTime[/color], [[COLOR=blue]Order[/color]] [COLOR=blue]int[/color], Receipt [COLOR=blue]Int[/color])
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'001'[/color],[COLOR=red]'06/20/2007'[/color],100,95)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'001'[/color],[COLOR=red]'06/10/2007'[/color],50,35)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'001'[/color],[COLOR=red]'06/01/2007'[/color],40,40)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'001'[/color],[COLOR=red]'05/25/2007'[/color],60,60)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'001'[/color],[COLOR=red]'05/15/2007'[/color],20,10)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'001'[/color],[COLOR=red]'05/15/2006'[/color],20,10)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'002'[/color],[COLOR=red]'06/20/2007'[/color],100,95)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'002'[/color],[COLOR=red]'06/10/2007'[/color],50,35)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'002'[/color],[COLOR=red]'06/01/2007'[/color],40,40)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'002'[/color],[COLOR=red]'05/25/2007'[/color],60,60)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'002'[/color],[COLOR=red]'05/15/2007'[/color],20,10)
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Temp [COLOR=blue]Values[/color]([COLOR=red]'002'[/color],[COLOR=red]'05/15/2006'[/color],20,10)
[COLOR=green]-- Query starts here.
[/color][COLOR=blue]Declare[/color] @Data [COLOR=blue]Table[/color]([COLOR=#FF00FF]RowId[/color] [COLOR=blue]Int[/color] [COLOR=blue]Identity[/color](1,1), Rank [COLOR=blue]Int[/color], [[COLOR=blue]Key[/color]] [COLOR=blue]varchar[/color](10), [COLOR=blue]Date[/color] [COLOR=#FF00FF]DateTime[/color], [[COLOR=blue]Order[/color]] [COLOR=blue]int[/color], Receipt [COLOR=blue]Int[/color])
[COLOR=blue]Insert[/color] [COLOR=blue]Into[/color] @Data([[COLOR=blue]Key[/color]], [COLOR=blue]Date[/color], [[COLOR=blue]order[/color]], Receipt)
[COLOR=blue]Select[/color] [[COLOR=blue]key[/color]], [COLOR=blue]Date[/color], [[COLOR=blue]Order[/color]], Receipt
[COLOR=blue]From[/color] @Temp
[COLOR=blue]Order[/color] [COLOR=blue]By[/color] [[COLOR=blue]key[/color]],[COLOR=blue]Date[/color] [COLOR=#FF00FF]DESC[/color]
[COLOR=blue]Update[/color] A
[COLOR=blue]Set[/color] A.Rank = [COLOR=#FF00FF]RowId[/color] - MinRowId + 1
[COLOR=blue]From[/color] @Data A
[COLOR=blue]Inner[/color] [COLOR=blue]Join[/color] (
[COLOR=blue]Select[/color] [COLOR=#FF00FF]Min[/color]([COLOR=#FF00FF]RowId[/color]) [COLOR=blue]As[/color] MinRowId, [[COLOR=blue]Key[/color]]
[COLOR=blue]From[/color] @Data
[COLOR=blue]Group[/color] [COLOR=blue]By[/color] [[COLOR=blue]Key[/color]]
) [COLOR=blue]As[/color] B
[COLOR=blue]On[/color] A.[[COLOR=blue]key[/color]] = B.[[COLOR=blue]key[/color]]
[COLOR=blue]Select[/color] [[COLOR=blue]key[/color]], Sum([[COLOR=blue]Order[/color]]) [COLOR=blue]As[/color] [[COLOR=blue]Order[/color]], Sum(Receipt) [COLOR=blue]As[/color] Receipt
[COLOR=blue]From[/color] @Data
[COLOR=blue]Where[/color] Rank <= 5
[COLOR=blue]Group[/color] [COLOR=blue]By[/color] [[COLOR=blue]key[/color]]