本範例將以富達東南亞(境外基金)及景順台灣精選基金(國內基金)為例,一般國內基金於當日即可結算並公告基金現值,境外基金通常稍晚一日或數日,查詢當日若該檔基金尚無基金報價資料時,則以前一營業日淨值替代。原始資料及希望結果如下:
#
|
圖示
|
說明
|
原始資料
|
|
ü 富達東南亞為境外基金,最新報價日期為2013-09-16,淨值為6.868。
ü 景順台灣精選為台股基金,最新報價資料為2013-09-17,淨值為23.93。
ü 二檔基金各3筆,合計6筆資料。
|
希望結果
|
|
希望呈現結果如右圖。
富達東南亞基金尚無2013-09-17之淨值資料,將以前一營業日2013-09-16之淨值替代,將增加1筆資料,合計7筆。
|
如何填補最新淨值資料之作法,主要想法是擷取各檔基金最新報價,並據以產生查詢報價日之基金淨值,即日期固定以查詢報價日期替換;再以UNION方式與原資料結合,利用UNION運算上將剔除重覆部分之特性,即可進行必要之填補,也可避免資料重覆出現,當然也可使用DISTINCT。SQL及結果如下:
SQL
資料產生(以ORALCE為例,MSSQL改以INTO #Fund)
CREATE TABLE FUND
AS
SELECT '景順台灣' FUND_ID
, DATE'2013-09-17' NAV_DATE
, 23.93 NAV
FROM DUAL
UNION ALL
SELECT '景順台灣', DATE'2013-09-16', 23.95
FROM DUAL
UNION ALL
SELECT '景順台灣', DATE'2013-09-14', 23.78
FROM DUAL
UNION ALL
SELECT '富達東南亞', DATE'2013-09-16', 6.868
FROM DUAL
UNION ALL
SELECT '富達東南亞', DATE'2013-09-13', 6.763
FROM DUAL
UNION ALL
SELECT '富達東南亞', DATE'2013-09-12', 6.777
FROM DUAL
沒有留言:
張貼留言