# QUERY(modelOrFields, param1,param2...)

结果对象的原始值是一个二维数组,一行一列时返回第一个元素的值。

TODO后期会支持通过其他表达式语法取某一列的数据

# 参数

modelOrFields:必需,是一个模型或者同一个模型的字段列表,如果是模型则查询该模型所有字段

params: 可选,是一个不定长数组,是模型显示定义的有序的参数列表

# 用途

  1. 单独查一个数据集明细数据,不作用模型之外的过滤条件、不关联其他表、如果在列表浮动内写这个表达式,每一行单独查询计算。
  2. SELECT比不支持过滤条件,如果需要在客户端对查询结果在二次过滤,用FILTER 函数处理

# 与SELECT函数的区别

SELECT 函数只在SQL 端计算、可以做复杂的sql运算,如字段汇总、window函数、关联其他表条件查询、在过滤条件中作为子查询使用等等,这些QUERY 函数都不支持,如果要对字段做汇总等处理都在模型层面做好加工。

在列表每行上求每个企业的总投资金额。

SELECT实现:

select(sum([企业投资关系].[认缴出资额(万元)]),[企业投资关系].[投资企业内部序号]=[企业基本信息].[企业内部序号])

QUERY实现:

QUERY([企业投资关系].[认缴出资额(万元)],[企业基本信息].[企业内部序号])

有这些前置步骤:

  1. 定义一个数据集企业投资关系加工:
    1. 加一个计算字段 sum([企业投资关系].[认缴出资额(万元)])
    2. 定义一个模型全局变量 投资企业内部序号参数
    3. 定义过滤条件 投资企业内部序号=投资企业内部序号参数

# 示例

  1. QUERY([企业投资关系].[认缴出资额(万元)],[企业基本信息].[企业内部序号]) 在列表每行上求每个企业的总投资金额。
  2. QUERY([销售汇总-大区].[销售数量(件)],'华中') 华中地区的总销售数量,需要做一个数据集将[销售明细表]按大区汇总成 [销售汇总-大区]
  3. QUERY([销售汇总-大区].[销售数量(件)],[C19]) 单元格[C19]指定的地区的总销售数量,该表达式可能在浮动区域内,[C19]也可以是去浮动区域内取大区字段的单元格
是否有帮助?
0条评论
评论