2016-04-06 6 views
0

データベースクエリに深い知識がありません。たとえば、私はこのようなテーブルを持っています。グループの後の行数を制限する

id | timestamp | lat | lon 
------------------------------ 
1 | 2016-04-06|-27.438|153.076 
1 | 2016-04-03|-27.346|152.456 
1 | 2016-04-04|-23.678|155.789 
2 | 2016-04-04|-27.438|178.076 
3 | 2016-04-04|-26.438|167.076 
2 | 2016-04-05|-24.438|123.076 

私が使用:

SELECT * FROM table order by [Timestamp]DESC 

それはDESC順序ですべてのデータを返します。しかし、私はそれぞれのid mssqlクエリから最大timestampの行を取得する必要があります。たとえば、次のように

id | timestamp | lat | lon 
-------------------------------- 
1 | 2016-04-06|-27.438|153.076 
2 | 2016-04-05|-24.438|123.076 
3 | 2016-04-04|-26.438|167.076 

答えて

4

使用ROW_NUMBER

SELECT 
    id, timestamp, lat, lon 
FROM (
    SELECT *, 
     rn = ROW_NUMBER() OVER(PARTITION BY id ORDER BY timestamp DESC) 
    FROM yourTable 
) t 
WHERE rn = 1 
+0

助けとなっているために喜んで最新のタイムスタンプを取得するために使用row_number()!それがあなたにとって有益だと思ったら、私の答えを受け入れてください。 :-) –

+0

はい私はそれを行います。 –

2

ID

SELECT * 
FROM 
(
    SELECT *, R = ROW_NUMBER() OVER (PARTITION BY id ORDER BY timestamp DESC) 
    FROM yourtable 
) D 
WHERE R = 1 
+0

ありがとう:) –

関連する問題