database:
id num date mark
-- ----- -------- ------------
1 a0001 9/1 訂單內容1
1 a0002 9/15 訂單內容2
2 a0003 9/17 訂單內容3
1 a0004 9/21 訂單內容4
3 a0005 9/24 訂單內容5
2 a0006 9/24 訂單內容6
1 a0007 10/1 訂單內容7
想要每個id 都列出data最新的一筆資料,列出結果如下
id num date mark
-- ----- -------- ------------
1 a0007 10/1 訂單內容7
2 a0006 9/24 訂單內容6
3 a0005 9/24 訂單內容5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | --建立測試資料表 CREATE TABLE AA ( id varchar(10) NULL, num nvarchar(20) NULL, n_date date NULL, mark varchar(10) NULL, ) ON [PRIMARY] insert into AA (id,num,n_date,mark) values ('1','a0001','2005-9-1','訂單內容1') insert into AA (id,num,n_date,mark) values ('1','a0002','2005-9-15','訂單內容2') insert into AA (id,num,n_date,mark) values ('2','a0003','2005-9-17','訂單內容3') insert into AA (id,num,n_date,mark) values ('1','a0004','2005-9-21','訂單內容4') insert into AA (id,num,n_date,mark) values ('3','a0005','2005-9-24','訂單內容5') insert into AA (id,num,n_date,mark) values ('2','a0006','2005-9-24','訂單內容6') insert into AA (id,num,n_date,mark) values ('1','a0007','2005-10-1','訂單內容7') |
解法
先找出每個ID所對應的最新Date為AAA,inner join 原本的表(AA)
顯示的內容判斷AAA的日期=AA的日期後做排序
1 2 3 4 5 6 | select AAA.id,num,AAA.n_date1 as n_date,mark from (select AA.id,max(AA.n_date) as n_date1 from AA group by id) AS AAA inner join AA ON AAA.id=AA.id where AAA.n_date1=AA.n_date order by id |
沒有留言:
張貼留言