FAQ > 金融建模 > 建模问题 > 语法相关

Q:SELECTOPT(Options)    

  • 功能说明:
    指定SELECT的选项,控制SELECT的行为, Options 为以下数值的组合(以下数值的_XOR或者相加)
    选项名含义
    SELECT_OPT_SINGLEV1返回为单个值,与VSelect同
    SELECT_OPT_SINGLEARRAY2返回为一维数组,与SSelect同
    SELECT_OPT_MATRIX4返回为Matrix类型,与MSelect同
    SELECT_OPT_PACKED8返回的行列下标为增长的数字
    SELECT_OPT_MULTIAGGSAMENAME16当采用SUMOF( * )这种模式的时候,每个字段的聚集的名保持和字段一致
    SELECT_OPT_AGGSAMENAME32当采用SUMOF([“abc”])的时候,返回的字段名依旧为”abc”
    SELECT_OPT_N_LEAD_COND64当聚集函数使用次数以及条件的时候,64表示移动领先于条件,默认是条件领先于移动。
    例如AVGOF([0],[0]>0.5,10),如果采用64则表明为最近10个内大于0.5的平均数,如果没有该选项,则为最近10个大于0.5的平均数
    移动的聚集函数也可以使用可选参数来实现这个功能,
    例如AVGOF([0],[0]>0.5,10,True)就表示对最近10个内符合条件的求平均,该参数为假表示最近10个符合条件的。"
    SELECT_OPT_DUP_FIELD_POS_TO_LAST128默认的时候当字段列表发生重复的时候,字段以及其计算的次序为第一个,
    当设置了128的时候,重复的字段以及其计算的次序为最后一个
    SELECT_OPT_REFOF_EMPTY_NIL256默认refof的时候,当引用越界时,返回的数据为整数0,设置该标志的时候返回的数据为NIL
    8192使得返回字符串为Unicode
    SELECT_OPT_ORDERBY_REFOF16384当有ORDER BY的时候(且非group by),返回列表里的REFOF和移动聚集函数的行为将会以排序结果集为基准,而非原始序。
    暂不支持向后推移。


    应用实例:对数组下标的变更
    范例01:
    功能:将表格行列下标更改为增长的自然数字下标
    数组:t:=Zeros(4,array('A','B','C','D'));
    ABCD
    0000
    0000
    0000
    0000

    执行:return select selectopt(8) * from t end;
    变成自增下标,如下:
    0123
    0000
    0000
    0000
    0000

    范例02:使用聚集函数时-对多列操作时的命名
    功能:对数组每列进行累加后并保持原列名不变
    数组:t:=`array('A':0->5,'B':10->15,'C':20->25);
    ABC
    01020
    11121
    21222
    31323
    41424
    51525

    执行:return select selectopt(16) sumof( *,1,100 ) from t end;
    ABC
    01020
    12141
    33363
    64686
    1060110
    1575135