0

特定の GUID でグループ化したいクエリがありますが、単一のグループを日付で並べ替え (簡単)、各グループの最新のレコードに基づいて結果セット全体を並べ替え、その順序を一覧表示したい結果セットとして。くっついてほしい。それは理にかなっていますか?

私が思いつくことができる最高のものは次のとおりです。

SELECT 
   ID, data, Date, 
   row_number() OVER (PARTITION BY GUID ORDER BY Date DESC) AS rn 
FROM 
   MyTable

ただし、これは結果セット全体の日付を考慮していません。

デフォルトのテーブル

ID      data                Date                        GUID
0       mapper started      2012-10-16 12:18:52     SessionID:[376f795a-dba2-49e1-8047-dbac9141d78b]
1       view models init    2012-10-16 12:18:53     SessionID:[2a1be1ce-606a-44ca-8400-75b7fd23d09a]
2       view load           2012-10-16 12:18:54     SessionID:[2a1be1ce-606a-44ca-8400-75b7fd23d09a]
3       mapper load         2012-10-16 12:18:55     SessionID:[376f795a-dba2-49e1-8047-dbac9141d78b]
4       view finished       2012-10-16 12:18:56     SessionID:[2a1be1ce-606a-44ca-8400-75b7fd23d09a]
5       mapper finished     2012-10-16 12:18:57     SessionID:[376f795a-dba2-49e1-8047-dbac9141d78b]

必要なクエリ出力:

ID      data                Date                         GUID
5       mapper finished     2012-10-16 12:18:57     SessionID:[376f795a-dba2-49e1-8047-dbac9141d78b]
3       mapper load         2012-10-16 12:18:55     SessionID:[376f795a-dba2-49e1-8047-dbac9141d78b]
0       mapper started      2012-10-16 12:18:52     SessionID:[376f795a-dba2-49e1-8047-dbac9141d78b]
4       view finished       2012-10-16 12:18:56     SessionID:[2a1be1ce-606a-44ca-8400-75b7fd23d09a]
2       view load           2012-10-16 12:18:54     SessionID:[2a1be1ce-606a-44ca-8400-75b7fd23d09a]
1       view models init    2012-10-16 12:18:53     SessionID:[2a1be1ce-606a-44ca-8400-75b7fd23d09a]
4

1 に答える 1

2

しばらく時間がかかりましたが、うまくいくようです:

select y.id, y.data, y.date, y.guid
from
  (select max(a.date) as date, a.guid
    from mytable a
    group by a.guid)x,
  (select id, data, date, guid, 
    row_number() over(partition by guid order by guid) as rn 
    from MyTable)y
where x.guid = y.guid
order by x.date desc, y.date desc;

SQL フィドル: http://sqlfiddle.com/#!3/1cdc1/59

于 2012-10-16T22:54:53.677 に答える