我已经在MS SQL Server Management Studio中获得了此表
+------+-----------+--------
| id | client id | bla bla blaaaa
+------+-----------+--------
| 1 | 1 | .......
| 2 | 2 | .......
| 3 | 3 | .......
| 4 | 8 | .......
| 5 | 9 | .......
| 6 | 15 | .......
| 7 | 1 | .......
| 8 | 16 | .......
| 9 | 2 | .......
| 10 | 9 | .......
| 12 | 12 | .......
+------+-----------+--------我需要获取唯一的客户端id,最大值为id,如下所示
+------+-----------+--------
| id | client id | bla bla blaaaa
+------+-----------+--------
| 3 | 3 | .......
| 4 | 8 | .......
| 6 | 15 | .......
| 7 | 1 | .......
| 8 | 16 | .......
| 9 | 2 | .......
| 10 | 9 | .......
| 12 | 12 | .......
+------+-----------+--------我试过这段代码,但它不能很好地工作。有人能帮我吗?
SELECT *
FROM table AS one
INNER JOIN table AS two
ON one.[client id] = two.[client id]
WHERE one.[id] > two.[id]发布于 2015-07-14 22:31:59
SELECT max(id), client_id, blah_blah
FROM my_table
GROUP BY client_id, blah_blah发布于 2015-07-14 22:39:06
我会选择ROW_NUMBER()解决方案:
SELECT *
FROM (
SELECT ROW_NUMBER() OVER(PARTITION BY [client id] ORDER BY [id] DESC) AS RN, *
FROM table AS one
) AS T
WHERE T.RN = 1;https://stackoverflow.com/questions/31409541
复制相似问题