我希望有一种简单的方法可以在不使用子查询的情况下做到这一点:
场景:您有“TableA”,其中包含“Key”、“SubKey”和“Value”列。我需要获取给定“键”的 MAX(“子键”)的“值”。
因此,如果表包含行:
KEY SUBKEY VALUE
1 1 100
1 2 200
1 3 300
对于 Key = 1,我需要值 300。我希望做这样的事情:
SELECT
VALUE
FROM
TableA
WHERE
Key = 1
HAVING
SubKey = MAX(SubKey)
但这是不行的。有没有办法在不执行“WHERE SubKey = (subselect for max subkey)”的情况下做到这一点?
原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用自联接:
这将返回所有子键值匹配的值,以防有多个值。
使用 RANK 和 CTE (SQL Server 2005+):
这将返回所有子键值匹配的值,以防有多个值。
使用 ROW_NUMBER & CTE (SQL Server 2005+):
这将返回一行,即使有多个具有相同的子键值…
使用顶部:
这将返回一行,即使有多个具有相同的子键值…