当前位置: 代码迷 >> Sql Server >> 关于SQL里抽出同一字段的3条数据有关问题
  详细解决方案

关于SQL里抽出同一字段的3条数据有关问题

热度:38   发布时间:2016-04-24 10:00:26.0
关于SQL里抽出同一字段的3条数据问题
现在我有一张表。
字段分别是
id   title  iphone  agentid  startdate

我想要抽出info表关于agentid字段的关于startdate排序的最后3条数据
但是显示出来的有问题。sql语句如下。求高人指点

SELECT a.id,a.title,a.iphone ,a.agentid,a.startdate
FROM info a
where  a.hide_flag = 1
GROUP BY a.id,a.title,a.iphone ,a.agentid,a.startdate
HAVING COUNT(a.agentid) <=3 
ORDER BY a.startdate desc

------解决思路----------------------
select a.id,a.title,a.iphone ,a.agentid,a.startdate from(
select *,row_number() over(partition by agentid order by startdate desc) as rId from info 
) as a where a.rId<=3
------解决思路----------------------
  SELECT a.id,
         a.title,
         a.iphone,
         a.agentid,
         a.startdate
    FROM (SELECT *,
                 ROW_NUMBER() OVER (PARTITION BY agentid
                                    ORDER BY startdate DESC
                 ) n
            FROM info
           WHERE hide_flag = 1
         ) a
   WHERE n <= 3
ORDER BY agentid, n
  相关解决方案