FAQ > 金融建模 > 建模问题 > 数组操作

Q:如何按照某一列进行排序    

  • A:
    方法一:类SQL
      setsysparam(pn_stock(),'SZ000002');
      endt:=inttodate(20101231);
      begt:=inttodate(20100101);
      n:=tradedays(begt,endt);
      setsysparam(pn_date(),endt);
     //取行情数据
    hqdata:=nday(n,'time',datetostr(sp_time()),'close',close(),'vol',vol(),'amount',amount(),1,amount()/vol());
     //按照收盘价倒序排列
      tmp1:=select * from hqdata order by ['close'] desc end;
     //按照列名为1的正序排列
      tmp2:=select * from hqdata order by [1] end;
      return array(tmp1,tmp2);


    方法二:SortTableByField(Value,Field,StorDir);
       Value:待排序的数组
       Field:排序字段
       StorDir:该字段为False时,倒序;该字段为true时,正序。

      setsysparam(pn_stock(),'SZ000002');
      endt:=inttodate(20101231);
      begt:=inttodate(20100101);
      n:=tradedays(begt,endt);
      setsysparam(pn_date(),endt);
    hqdata:=nday(n,'time',datetostr(sp_time()),'close',close(),'vol',vol(),'amount',amount(),1,amount()/vol());
      SortTableByField(hqdata,'close',false); //按照收盘价从大到小排列
      return hqdata;