首页 > 解决方案 > SQL仅选择第一列基本的唯一记录

问题描述

我得到了一张桌子:

Code Price 
A |  200
A |  199
B |  300
B |  320
C |  400
C |  410

如何选择这些数据来获取

A |  200
B |  300
C |  400

我想出的是

SELECT DISTINCT 

但它不起作用,如果我尝试使用

GROUP BY CODE 

我得到:

选择列表中的“Table.Code”列无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。

提前感谢您的任何提示。

标签: sqlselect

解决方案


sql 没有“首先出现”的聚合,但有一个 hack:

with first_price_per_code as (
    select Code, Price, r = row_number() over (partition by Code order by (select null))
    from Table
) select Code, Price from first_price_per_code where r = 1

当然,这种行为是未定义且不受支持的,祝你好运!


推荐阅读