You can do it by single stored procedure. use code below:-SELECT t.Category,t.ArticleFROM(SELECT ROW_NUMBER() OVER(PARTITION BY Category ORDER BY Article DESC) AS RowNo,CategoryArticleFROM Table)tWHERE t.RowNo<=5ORDER BY t.Category
This will give you first five article for each category in alphabetical order(if you want it in reverse alphabetical use code in blue also).the o/p will be of the formCategory ArticleCategory1 Article1Category1 Article2Category1 Article3Category1 Article4Category1 Article5Category2 Article1Category2 Article2Category2 Article3........Category10 Article5