A:实现:将月线数据转换成行为年,列为每月数据的展示方式
//数据demo,产生"截止日"、"沪深300"、"大盘"、"小盘"共四列
setsysparam(pn_cycle(),cy_month());
setsysparam(pn_stock(),"SH000300");
setsysparam(pn_date(),20250630T);
t:= Nday(54,"截止日",datetostr(sp_time()),
"沪深300",stockzf3(),
"大盘",spec(stockzf3(),"SH000016"),
"小盘",spec(stockzf3(),"SH000852"));
//--数据处理--月份转成列
mc:=mcols(t,1) minus array("截止日"); //多级表头展开
//根据截止日产生年与月
t:=select *,yearof(strtodate(["截止日"])) as "年份",monthof(strtodate(["截止日"])) as "月份" from t end;
//按月横向存放每年的数值
rt:=array();
for s,v in mc do
begin
for i:=0 to length(t)-1 do
rt[t[i,"年份"],v$"@"$t[i,"月份"]$"月"]:=t[i,v];
end;
//--若需要产针年份存放到第一列中,则放开下面这一行代码
//rt:= select thisrowIndex as "年份",* from rt order by thisrowIndex end;
return rt;
效果如下:
