0

次の表があります。

ID  Date   FirstName  Dept
1   1/2/12 James      Act
1   2/5/12 Mike       IT
2   5/6/12 Joe        HR
2   7/6/12 Keith      IT

IDごとに必要なことは、最大日付を取得する必要があることです。最大日付を持つ各 ID のレコードの ID、Date、FirstName、Dept を表示する必要があります。この場合、ID が 1 の場合、1 と表示します。

グループ化する必要があることはわかっています。

テーブル名は TblAct です

4

3 に答える 3

2

このMAX()関数は、GROUP BY

select t1.id, t1.date, t1.fname, t1.dept
from tblAct t1
inner join
(
  SELECT Max(Date) maxdate, ID
  from TblAct
  GROUP BY id
) t2
  on t1.id = t2.id
  and t1.date = t2.maxdate

デモで SQL Fiddle を参照してください

于 2012-08-10T00:48:55.590 に答える
0

group by を使用しないでください:

select * from tblAct t1
where date=(select max(date) from tblAct where t1.id = id)

ただ楽しんで。

于 2012-08-10T01:18:35.223 に答える
0

ウィンドウ/ランキング関数でこれを行うことができます:

select ID, Date, FirstName, Dept
from (select t.*,
             row_number() over (partition by id order by date desc) as seqnum
      from t
     ) t
where seqnum = 1

これは、日付ごとに各 ID のすべての行を逆順に並べ替えています。次に、それらの最初のものを選択します。

于 2012-08-10T01:09:13.020 に答える