说我有这张桌子:
(列:Row
是基于列ID
)
ID | Row | State |
1 | 1 | CA |
1 | 2 | AK |
2 | 1 | KY |
2 | 2 | GA |
2 | 3 | FL |
3 | 1 | WY |
3 | 2 | HI |
3 | 3 | NY |
3 | 4 | DC |
4 | 1 | RI |
我想生成一个新列,其中每列Row
列的ID
列的编号最高。我怎么做到这一点?我一直在搞乱MAX(),GROUP BY和一些分区,但每次都会遇到不同的错误。很难正确地解决这个问题。这是我的目标输出:
ID | Row | State | MaxRow
1 | 1 | CA | 2
1 | 2 | AK | 2
2 | 1 | KY | 3
2 | 2 | GA | 3
2 | 3 | FL | 3
3 | 1 | WY | 4
3 | 2 | HI | 4
3 | 3 | NY | 4
3 | 4 | DC | 4
4 | 1 | RI | 1
答案 0 :(得分:10)
答案 1 :(得分:2)
您可以在表上的查询和聚合表之间加入:
SELECT t.*, max_row
FROM t
JOIN (SELECT id, MAX([row]) AS max_row
FROM t
GROUP BY id) agg ON t.id = agg.id
答案 2 :(得分:1)
您可以首先使用group by id和max创建查询以获取最高编号。然后将此查询用作子查询,并使用id进行内连接。
然后使用子查询中的最大列来获取最终结果。