SQL语句:查询出每个分组的前若干条记录

时间:2023-02-13 11:13:46

如表T内容如下:

month sale

   1       10

   1       20

   1       30

   1       40

   2       10

   2       20

   2       30

   2       40

要求:查询出每个月前三条的销售记录

 

select * from T as a where sale in (select top 3 sale from T where month=a.month);

 

执行后结果如下:

month sale

   1        10

   1        20

   1        30

   2        10

   2        20

   2        30

 

但一直没有想清除是怎么样的原理,不知有没有人能看到指点指点。