利用動態巨集實現根據字串引數順序確定多層分組順序

2021-07-25 01:11:59 字數 1104 閱讀 6881

有時客戶需要根據引數來確定多層分組的分組順序,我們可以用動態巨集來實現,我們來看乙個簡單的例子:

第一步:設計報表如下,

附group()函式說明:

根據分組表示式,從資料集中選出一組組集。

語法: datasetname.group( , ,) //適用於不需要排序或資料集中已排好序datasetname.group(selectexp}}}}})

引數說明:

selectexp

選出的分組表示式,可以是字段列名/列號,也可以是表示式。列號用#n表示,例如#0代表第0列,#1代表第1列,依此類推

descexp

分組前記錄的排序順序,true為逆序,false為順序

filterexp

過濾表示式

sortexp

分組前記錄的排序依據表示式

groupsortexp

分組後對組的排序表示式,一般是彙總運算的表示式,如組合計等 groupdescexp 組排序順序,true為逆序,false為順序

rootgroupexp

是否root資料集表示式

返回值: 一組資料的集合,資料型別由selectexp的運算結果來決定

示例:

例1:ds1.group(class) 把資料集ds1中所有記錄按照class欄位進行分組,並返回每組的class值組成的集合

例2:ds1.group(class, true ) 把資料集ds1中所有記錄按照class欄位降序排列,然後根據class進行分組,並返回每組的class值組成的集合

例3:ds1.group(class,false,***=='1')從資料來源ds1中選取性別為"1"的記錄,按照class欄位公升序排列,然後根據class進行分組,並返回每組的class值組成的集合

例4:ds1.group(class, true,***=='1', id ) 從資料來源ds1中選取性別為"1"的記錄,按照id欄位降序排列,然後根據class進行分組,並返回每組的class值組成的集合

例5:ds1.group(省份,true,,,ds1.sum(工業產值),true) 對資料集ds1按照省份進行分組,分組後求出每組的sum(工業產值),然後按照這個彙總值對組進行逆序排列

C 之 把字串作為巨集引數

define printstring arg cout arg 在巨集表示式中,字元 放在引數arg的前面,表示在進行轉換時,引數放在雙引號中。如 printstring hello 預處理器就會把它轉換為 cout hello 邏輯 if指令 邏輯 if指令的使用方式有兩種。第一,可以測試某個符號...

C語言巨集引數的字串化和巨集引數的連線

在巨集定義中,有時還會用到 和 兩個符號,它們能夠對巨集引數進行操作。用來將巨集引數轉換為字串,也就是在巨集引數的開頭和末尾新增引號。例如有如下巨集定義 define str s s那麼 printf s str c.biancheng.net printf s str c.biancheng.ne...

c 語言中巨集引數的字串化跟巨集引數的連線

c語言中的巨集有無引數的巨集,也有帶引數的巨集。其實巨集就相當與乙個字串模板,然後預處理器在有巨集的標誌處,把巨集展開,說明白點,也就是字串的替換工作。不過這個工作發生在編譯之前,以前一直不理解,感覺c語言中的巨集有多高大上,原來只是對你的c 進行一些字串的替換工作,替換後,還是c語言,然後才開始編...