80,000以上の行(タグフィード)を持つ単一のテーブルがあり、そのうち12個の個別のタグ(TagID)があるため、12行のみを返します。
(MAX)日付列に基づいて、各tagidの最新の値を検索したいと思います。だから本当に私はtagidにDISTINCTが必要で、最新の日付のレコードがあることを確認し、tagid、日付、場所の列を表示します
80,000以上の行(タグフィード)を持つ単一のテーブルがあり、そのうち12個の個別のタグ(TagID)があるため、12行のみを返します。
(MAX)日付列に基づいて、各tagidの最新の値を検索したいと思います。だから本当に私はtagidにDISTINCTが必要で、最新の日付のレコードがあることを確認し、tagid、日付、場所の列を表示します
SELECT date, tagid, location
FROM table a
WHERE date = (
SELECT MAX(date)
FROM table b
WHERE a.key1 = b.key1
AND a.key2 = b.key2
-- etc
)
あなたが望むものを手に入れます。それWHERE a.tagid = b.tagid
がおそらくあなたが望むWHERE句になると思いますが、行を一意にする他の列がある場合は、それらも含める必要があるかもしれません。
サブクエリ内のすべてのキー列を接続せずに、目的の結果を生成する方法を次に示します。
WITH x AS (
SELECT datecol,
tagid,
location,
ROW_NUMBER() OVER ( PARTITION BY tagid ORDER BY datecol DESC ) AS rnum
FROM sometable
)
SELECT datecol, tagid, location FROM x WHERE rnum = 1
;