在t-sql中将每个第二行作为结果表获取

cyb*_*ork 3 sql t-sql sql-server select

我正在寻找一个返回列表的t-sql脚本,它显示来自Table1的分组中的每一秒值.

例如,我有以下数据(表1),并希望得到所需的结果列表:

Table1:
Customer    Quantity
A           5
A           8               (*)
B           3
B           5                (*)
B           11
C           7
D           4
D           23               (*)
Run Code Online (Sandbox Code Playgroud)

期望的retult-list:

Customer    Quantity
A           8
B           5
D           23
Run Code Online (Sandbox Code Playgroud)

我想用'select distinct和left outer join'做一些事情,但我无法让它工作.可能我需要行编号,但无法弄清楚如何操作.有人可以帮帮我吗?

Beneath是我用来制作和填充Table1的脚本:

CREATE TABLE Table1
(Customer nvarchar(1) NULL,
Quantity int NOT NULL);

INSERT INTO Table1(Customer,Quantity)
VALUES 
('A',5),
('A',8),
('B',3),
('B',5),
('B',11),
('C',7),
('D',4),
('D',23);
Run Code Online (Sandbox Code Playgroud)

Mur*_*nik 6

使用row_number窗口函数可以非常轻松地完成此操作:

SELECT customer, quantity
FROM   (SELECT customer, quantity,
               ROW_NUMBER() OVER (PARTITION BY customer 
                                  ORDER BY quantity ASC) AS rn
        FROM   table1) t
WHERE  rn = 2
Run Code Online (Sandbox Code Playgroud)