Sql 返回access中包含重复项的行中的最高值
我似乎找不到答案。。。 我有一张桌子Sql 返回access中包含重复项的行中的最高值,sql,ms-access,Sql,Ms Access,我似乎找不到答案。。。 我有一张桌子 users name | cat 1 | cat 2 | cat 3 ------------------------------------------- Karl 1 Karl medium T 1 James high T 1
users
name | cat 1 | cat 2 | cat 3
-------------------------------------------
Karl 1
Karl medium T 1
James high T 1
James medium T 1
James 1
Toni medium T 1
Toni high T 1
Toni 1
Klara 1
Laura 1
Thomas 1
Tobi medium T 1
Tobi 1
我希望结果是这样的:
保存每个人的记录,但仅保留cat 1中最高值的记录的表格
users
name | cat 1 | cat 2 | cat 3
-------------------------------------------
Karl medium T 1
James high T 1
Toni high T 1
Klara 1
Laura 1
Thomas 1
Tobi medium T 1
我得到的最接近的解决方案是这个,但它只返回所有最低值,当将MIN更改为MAX时,它返回所有行
SELECT DISTINCT * FROM users
WHERE users.[cat 1] IN
(SELECT MIN([cat 1]) FROM users GROUP BY [name])
需要唯一标识符字段-应提供自动编号。然后使用嵌套的TOP N查询。处理Null,因为Null首先按升序排序 如果高和中是唯一的值,请考虑:
SELECT * FROM users
WHERE ID IN
(SELECT TOP 1 ID FROM users AS Dupe WHERE Dupe.Name=Users.Name
ORDER BY Nz([Cat 1],"ZZ"));
否则,请将文本值转换为数字:
SELECT * FROM users
WHERE ID IN
(SELECT TOP 1 ID FROM users AS Dupe WHERE Dupe.Name=Users.Name
ORDER BY Switch([cat 1]="high",1, [cat 1]="medium",2, [cat 1]="low",3, True,4));