今天遇到的SQL需求是:找出資料表中特定的portfolio_id 的英文、中文版資料各自的最大資料日期。資料表規格如(圖一)。首先,我們先排出所有的portfolio_id在table的英文、中文版資料各自的最大資料日期,SQL statement範例如下:
| select portfolio_id,lang, max(data_date) as data_date from vf_top_holding group by portfolio_id,lang; |
產生的資料結果將是資料表(table)裡所有的portfolio_id的全部資料(例如:36個月, 從2006/09至2009/09)的最大值搜尋,分別列出每個portfolio_id英文版(ENG)、中文版(TWA)的最大值。因此很可能遇到某個portfolio_id的英文版最大資料日期為:2009/08/31;中文版最大資料日期為:2009/06/30。查詢結果範如(圖二)。接下來我們加入 HAVING 子句查詢特定portfolio_id的英文版(ENG)、中文版(TWA)在資料表(table)的最大資料日期,,SQL statement範例如下:
| select lang, max(data_date) as data_date from vf_top_holding group by portfolio_id,lang having portfolio_id ='60012002'; |
使用HAVING子句就能指定只傳回整個資料表(table)裡portfolio_id = '60012002'的資料,再用group by 分成英文版(ENG)、中文版(TWA),最後找出這2個語言版本的最大資料日期,如(圖三)。
文章標籤
全站熱搜
