1
:私が欲しいクエリは、Nフィールドに基づいて最大の行を検索するには、次のデータが与えられ
ID Name, Value, TimeStamp
1, 'A', 7.00, 21/12/2017
2, 'A', 5.00, 21/12/2017
3, 'A', 6.00, 20/12/2017
4, 'B', 1.00, 21/12/2017
結果は次のとおりです。
Name, Value, TimeStamp
'A', 5.00, 21/12/2017
'B', 1.00, 21/12/2017
すなわち、名前によるグループ及び2以上が同じタイムスタンプが最新のID
と1を取る持っている場合は、最新のタイムスタンプとの値を取る、私は別のポストに類似していた答えを見つけるように見えるんでした:
SELECT ID, Name, Value, TimeStamp
FROM MyTable
JOIN (SELECT Name, MAX(TimeStamp) As TimeStamp
FROM MyTable
GROUP BY Name) m
ON MyTable.Name = m.Name and MyTable.TimeStamp = a.TimeStamp
この
WITH CTE AS (
...
)
SELECT Name, Value, TimeStamp
FROM CTE
JOIN (SELECT Name, MAX(ID)
FROM CTE
GROUP BY Name) a
ON CTE.Name = a.Name AND CTE.ID = a.ID
をしかし、私は今、3つのフィールドにそれをスケールアップする場合に何が起こるか:IDを取得するので、私の最大のタイムスタンプを与え、私はつまり、私が使用することができ、プロセスを繰り返すことができます。これを行う簡単な方法はありますか、私は再帰的なCTEを実験していませんでした。動的SQLを回避しようとしています。
1、 'A'、7.00,21/12/2017が 'A'になり、 '2017-12-21 | 1'と7.00が3つのフィールドとして統合された列でMAXを実行するので、解決策を見つけた可能性があります – Glen
あなたの電話で申し訳ありませんので、まだ答えを入力することはできません – twoleggedhorse
そしてあなたは名前で分割する必要があります – twoleggedhorse