專案有很多那種有X軸Y軸不同層級結構的表,我們的解決方式是建置OLAP CUBE來做martix的統計報表,前端用EXCEL畫範本,後台則用ADOMD連線執行MDX,針對MDX中的機關單位及年月設定參數,執行時再置換參數產出結果套表。
如果傳入的年月需依傳入的值做動態變化,因MDX中無法像TSQL那樣使用變數宣告做值的運算,純粹寫MDX的話原則是可以用strtomember或strtoset的方式來克服, 例如:
where (
(strtoset("[年月].[年月].["+str(round(@ym/100,0)*100+1)+"]:[年月].[年月].[@ym]")
)
其中 @ym是後端程式依前端指定的年月做replace。
如此一來就可做到動態設定值的運用了。