我对SQL还是很陌生,它试图过滤掉不是该信息的最新版本的所有数据版本。这是该表的一个片段:
TABLE1
PlacementID Version Usage
2066 2 4.4
2066 1 4.2
2066 0 4.1
3001 1 8.2
3001 0 7.9
5005 3 10.3
5005 2 9.9
5005 1 9.8
5005 0 9.9
这是我希望查询产生的结果:
TABLE1
PlacementID Version Usage
2066 2 4.4
3001 1 8.2
5005 3 10.3
这是我的想法,由于明显的原因,它不起作用:
SELECT PlacementID, Version, Usage
FROM TABLE1
WHERE Version = MAX(VERSION)
是否有某种方法可以使MAX函数特定于我要查找的特定展示位置ID?这样就可以了。
答案 0 :(得分:2)
只需添加subquery
使其与相关:
SELECT t.*
FROM TABLE1 t
WHERE Version = (SELECT MAX(t1.VERSION) FROM TABLE1 t1 WHERE t1.PlacementID = t.PlacementID);
但是,还有其他选择可以实现,但是它需要您使用的DBMS标签:
其中之一是:
SELECT t.*
FROM (SELECT t.*,
ROW_NUMBER() OVER (PARTITION BY PlacementID ORDER BY VERSION DESC) AS Seq
FROM table t
) t
WHERE Seq = 1;