用一条sql取出每个分类的前2条记录

 
--用一条sql 取出每个分类的前2条记录
--按公司分组, 查每个分组中最新的前2条记录 
 
SELECT FID, FAccount, FCompanyID
FROM dbo.TAccounts AS a
WHERE FID IN ( 
SELECT TOP(2) FID FROM dbo.TAccounts
WHERE FCompanyID=a.FCompanyID
ORDER BY FRegisterDate DESC
) ORDER BY a.FCompanyID DESC ,a.FID

 

--使用ROW_NUMBER() 进行排位分组
SELECT FID, FAccount, FCompanyID
FROM ( 
SELECT
rowNum = ROW_NUMBER() OVER (PARTITION BY FCompanyID ORDER BY FRegisterDate DESC ),*
FROM dbo.TAccounts
) AS a WHERE a.rowNum <= 2 ORDER BY a.FCompanyID DESC ,a.FID

 

--使用APPLY
SELECT DISTINCT b.FID, b.FAccount, b.FCompanyID
FROM dbo.TAccounts AS a
CROSS APPLY( 
SELECT TOP(2) * FROM dbo.TAccounts
WHERE a.FCompanyID = FCompanyID ORDER BY FRegisterDate DESC
) AS b ORDER BY b.FCompanyID DESC ,b.FID

 

posted @ 2016-07-28 22:53  茗::流  阅读(1548)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。