从sql中的每个客户获取第一条记录

时间:2015-08-31 12:31:50

标签: sql greatest-n-per-group

我在存储过程中创建了临时表,并将该表存储在该表中。请参阅下面的条目

表名 - CustomerOrderList

 customerid | customer Name | address | Order id | price | quantity 
---------------------------------------------------------------------
 2343        | xxxx          | address1| 3123     | 34    | 3
 2343        | xxxx          | address1| 3123     | 35    | 2
 2343        | xxxx          | address1| 3122     | 23    | 1
 4343        | YYYY          | address2| 3234     | 65    | 5
 4343        | YYYY          | address2| 3433     | 34    | 4
 4555        | ZZZZ          | address3| 3232     | 45    | 3

需要获得以下结果

 customerid | customer Name | address | Order id | price | quantity 
---------------------------------------------------------------------
 2343        | xxxx          | address1| 3123     | 34    | 3
 4343        | YYYY          | address2| 3234     | 65    | 5
 4555        | ZZZZ          | address3| 3232     | 45    | 3

请为此建议sql查询。

我使用以下查询获取每个客户的第一条记录 从@TempProductInfo中选择* group by customerid

收到以下错误

在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

请帮助我获得我的要求

1 个答案:

答案 0 :(得分:0)

SQL-Server 中,您可以使用ROW_NUMBER之类的内容:

select * 
from (
    select customerid, [customer Name], address, [Order id], price, quantity,
           row_number() over(partition by customerid order by customerid, price) rn
    from @TempProductInfo 
    ) x
where rn = 1