0

我有表:

column1   column2    column3        column4 
---------------------------------------------
1          53          6527          111
2          53          6527          111
3          53          6527          111
4          53          6527          111
5          53          6527          222
6          53          6527          222
7          53          6527          333
8          53          6527          333
9          53          6527          444
10         53          6527          444
11         53          6527          444
12         53          6527          444

我需要select是否存在三行和一些 column4 值如果只存在两个然后两个或一个。麦克斯三岁。在select我需要得到这样的结果之后:

column1   column2    column3        column4 
---------------------------------------------
1          53          6527          111
2          53          6527          111
3          53          6527          111
5          53          6527          222
6          53          6527          222
7          53          6527          333
8          53          6527          333
9          53          6527          444
10         53          6527          444
11         53          6527          444
4

1 回答 1

0

由于您使用的是 SQL Server,因此您可以使用排名函数s 来获得结果:

select [column1], [column2], [column3], [column4]
from
(
  select [column1], [column2], [column3], [column4],
    row_number() over(partition by column2, column3, column4 order by column1) rn
  from yourtable
) src
where rn <= 3

请参阅带有演示的 SQL Fiddle

于 2013-03-13T10:36:49.047 回答