取得每个ID的前1行

时间:2019-09-24 13:51:59

标签: sql ms-access

有一些关于它的帖子,但是我无法使其正常工作... 我只想为每个ID选择一行,类似于在Oracle分区中但可以访问的row_number()之类的东西。

ty

SELECT a.*
FROM DATA as a
WHERE a.a_sku = (SELECT top 1 b.a_sku
           FROM DATA as b
           WHERE a.a_sku = b.a_sku)

但是我得到了相同的表数据

表DATA的示例 https://ibb.co/X4492fY

2 个答案:

答案 0 :(得分:0)

您应该在下面的查询中尝试-

SELECT a.*
FROM DATA as a
WHERE a.Active = (SELECT b.Active
                  FROM DATA as b
                  WHERE a.a_sku = b.a_sku
                  AND a.Active < b.Active)

答案 1 :(得分:0)

如果您不在乎返回具有匹配a_sku值的每组记录中的哪条记录,则可以使用FirstLast函数,例如:

select t.a_sku, first(t.field2), first(t.field3), ..., first(t.fieldN)
from data t
group by t.a_sku