报表结果按照两个字段升序排列
需求背景
报表中使用select函数取数时,需要根据两个字段升序排列。如从雇员表(employee)中取数,并按照学历(degree)和性别(sex)字段升序排列。
分析
报表数据集函数ds.select()函数说明中的一个例子:
例4:ds1.select( name, true, sex==’1′, id )
从数据源ds1中选取性别为男性的name字段列的值并按id字段降序排列
但是我们发现这种写法只能根据一个字段的排序方式排列,如何实现根据多个字段的排序方式排序呢?下面我们来看一下实现方法。
实现
方法一:使用select函数
使用select函数实现上述需求,A2单元格:=ds1.select(empid,false,,degree+sex)
结果如下:
先按照学历升序4到5,再按照性别升序1到2。
方法二:使用selectEx函数
我们查看selectEx的函数说明可以发现该函数正是为实现上述需求定义的。我们看一下具体实现:
结果如下:
先按照学历升序4到5,再按照性别升序1到2,结果同第一种实现方式。
比较
实现上述需求的两种方法不相伯仲,下面我们来比较一下不同需求下的这两种方法。
1、结果要求按照多个不同类型的字段排序方式进行排序,如结果按照degree、sex、birthday升序排列。这时我们再使用第一种方法时会报错:
而使用selectEx函数则可以实现,如:=ds1.selectEx(empid,,”degree;sex;birthday,false”),所以这种情况下建议使用selectEx函数实现。
2、结果需要根据某些字段升序,某些字段降序展现,如结果按照degree升序、sex降序、birthday升序排列。这时我们发现使用select函数无法实现,以为其只能指定一种排序方式。使用selectEx则可以实现,如:=ds1.selectEx(empid,,”degree,false;sex,true;birthday,false”)即可。所以这种情况下也建议使用selectEx函数实现。