T-SQL:基于MAX(其他列)选择列
发布时间:2020-05-24 09:16:19 所属栏目:MsSql 来源:互联网
导读:我希望有一个简单的方式来做,而不使用子查询: 场景:您有“表”,列“键”,“子键”和“值”。我需要为给定的“键”获取MAX的值(“SubKey”)。 所以如果表包含行: KEY SUBKEY VALUE1 1 1001 2 2001 3 300 对于Key = 1,我需要值300.我希望做这样的事情:
|
我希望有一个简单的方式来做,而不使用子查询: 场景:您有“表”,列“键”,“子键”和“值”。我需要为给定的“键”获取MAX的值(“SubKey”)。 所以如果表包含行: 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)’? 解决方法使用自联接:这将返回所有与子键值匹配的值,以防万一有多个。 SELECT a.value
FROM TABLE a
JOIN (SELECT MAX(t.subkey) AS max_subkey
FROM TABLE t
WHERE t.key = 1) b ON b.max_subkey = a.subkey
WHERE a.key = 1
使用RANK& CTE(SQL Server 2005): 这将返回所有与子键值匹配的值,以防万一有多个。 WITH summary AS (
SELECT t.*,RANK() OVER(ORDER BY t.subkey DESC) AS rank
FROM TABLE t
WHERE t.key = 1)
SELECT s.value
FROM summary s
WHERE s.rank = 1
使用ROW_NUMBER& CTE(SQL Server 2005): 这将返回一行,即使有多个具有相同子项的值… WITH summary AS (
SELECT t.*,ROW_NUMBER() OVER(ORDER BY t.subkey DESC) AS rank
FROM TABLE t
WHERE t.key = 1)
SELECT s.value
FROM summary s
WHERE s.rank = 1
使用TOP: 这将返回一行,即使有多个具有相同子项的值… SELECT TOP 1
t.value
FROM TABLE t
WHERE t.key = 1
ORDER BY t.subkey DESC (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
