2017-11-28 10 views
0

の名前でグループにそれをする、私は最新のレコードがあればどのようにグループ化できますか?

name  time_stamp    quantity 
John  2017-11-28 08:46:01 65 
Clark 2017-11-28 08:44:08 98 
John  2017-11-28 08:50:54 74 

と私は必要なのであるようなテーブルを持っている想像して、最新のレコードからのデータを持ってみましょう。私は、Johnがどのデータを使うべきか分からないので、名前でグループ化することはできません。 65は、その後、古いレコードの74であるので、私、私はSELECT name, MAX(time_stamp) AS time_stamp, quantity FROM table1 GROUP BY time_stampを試みたが、それはので、私のために動作しません

..

name  time_stamp    quantity 
Clark 2017-11-28 08:44:08 98 
John  2017-11-28 08:50:54 74 

のような出力を必要とする -

列 'table1.name'は、集計関数またはGROUP BY句に含まれている ではないため、選択リストでは無効です。

答えて

2
WITH CTE AS(
    SELECT *, 
      ROW_NUMBER() OVER (PARTITION BY [name] ORDER BY time_stamp DESC) AS RN 
    FROM YourTable) 
SELECT * 
FROM CTE 
WHERE RN = 1; 
0

あなたは最大(TIME_STAMP)を選択するために、派生テーブルを使用することができます。

SELECT T1.* 
    FROM (
     SELECT [name] 
       ,MAX(time_stamp) AS MAXtime_stamp --MAX time_stamp by name 
      FROM table1 
     GROUP BY [name] 
     ) AS dT INNER JOIN table1 T1 ON dT.MAXtime_stamp = T1.time_stamp 
            AND dT.[name] = T1.[name] 
関連する問題