#### 驰骋工作流引擎流程实例表: WF_GenerWorkFlow, 表结构以及其他的信息如下.

1. 该表存储的是所有流程实例数据,WorkID 是一个Int类型的不重复的,全局唯一的主键.
1. Title,varchar流程标题,WFState 流程大状态int类型.
1. WFSta 是流程的大状态,枚举int类型, 0=运行中,1=已完成,2=其他,不能使用 WFSta 作为查询条件。
1. WFState 是流程小状态,枚举int类型, 更细致的描述了流程的状态数据, , 1=草稿,2=运行中, 3=已经完成, 5=退回. 4=挂起. 0=是空白, 每个查询语句都要有状态作为条件,比如说: 
1. Emps 流程参与人,格式为:@zhangsan,张三@lisi,李四@ 比如:查询我发起的并且已经完成的流程: SELECT * FROM WF_GenerWorkFlow WHERE Emps LIKE '%@WebUser.No,%' AND WFState > 0
1. 流程信息字段OID是int类型的主键,不要参与分析. Title流程标题.
1. Starter 流程的发起人,外键字段 对应 Port_Emp No编号。 StarterName 流程发起人的名称,冗余设计.
1. FK_Node 运行到的节点, NodeName 是节点名称.冗余设计.
1. RDT 发起时间,varchar格式,格式: yyyy-MM-dd HH:mm:ss
1. SendDT, 上次发起的时间, 流程最后处理时间varchar格式,格式: yyyy-MM-dd HH:mm
1. FK_NY 发起的月份格式为: yyyy-MM, 当然可以从 RDT 字段取出来,是它前7位. 
1. FK_Dept 发起人部门编号, DeptName 发起人部门名称, 这里是荣誉设计,比如我要统计部门发起的流程个数: SELECT DeptName, COUNT(*) AS num WHERE WFState>1 GROUP BY DeptName 
1. TSpan 是耗时,按照小时计算的.

3. 业务数据字段
- 对于枚举或者外部数据源字段,都可以做为分组分析字段的依据。
- 业务字段的数值类型的字段,不应该作为分组统计,可以按照对枚举字段的组合,默认求和作为分组统计。
- 比如: SELECT MyEnumField, SUM(MyNumberField) FROM MyTable WHERE WFState >0  GROUP BY MyEnumField 

#### 其他说明:
1. 我参与: WHERE Emps LIKE '%@WebUser.No,%' AND WFState > 0
1. 我发起: WHERE FlowStarter LIKE '%@WebUser.No,%' AND WFState > 0
1. 全部的: WHERE WFState > 0
1. 查询条件不能出现 WFSta > 0 条件.

#### 返回格式要求.
1. 每一种分析报表生成一条SQL语句,建立一个单元,多个单元建立json的数组。
2. 每一单元包括序号No,分析种类Name、图形种类中文名称ChartName(柱状图,折线图,饼图,雷达图,表格).
3. 图形种类英文ChartType(柱状图:ChartLine,折线图:ChartZZT,饼图:ChartPie,雷达图:ChartRadar,表格:Table)。
4. 查询语句SQLExp,SQL语句的字段名不能为中文。

#### 注意如下事项:
1. 返回完整JSON代码,不要写继续添加之类的注释,不要加//,不要有非法的注释!避免解析失败。
2. 这里的日期类型是varchar格式的格式 yyyy-MM-dd, 日期时间类型是varchar格式:yyyy-MM-dd HH:mm
3. 对于数值类型的字段(枚举除外), 不能放入到GROUP BY 列表里,对于日期,日期时间类型的字段也是如此。
4. 对于生成的Tabel,不要生成 SELECT * FROM {PTable} 这样的语句.
 
#### SQL表达式中可以用的变量:
1. 在执行SQL之前系统会把SQL语句约定的格式的字符串替换下来.
   比如: SELECT COUNT(*) FROM Port_DeptEmp WHERE FK_Emp='@WebUser.No' 求出来当前登录人员有多少个部门.
2. 您可以把 @WebUser.No, @WebUser.DeptNo 作为变量设置在sql语句中. @WebUser.No 当前登录人员编号, @WebUser.DeptNo 登录人员部门编号, 都是字符串格式的参数.
3. 系统在执行的过程中会把这个变量替换下来.
4. 当前登陆人员编号 @WebUser.No
   当前登录人员部门 @WebUser.DeptNo
   当前登录人员组织编号 @WebUser.OrgNo
   当前日期 @RDT 格式: yyyy-MM-dd HH:mm
   当前月份 @NY  格式: yyyy-MM
   当前年度 @ND  格式: yyyy
5. 若有其他变量,在后面有描述.
  
#### 相关的表:
1. 枚举信息存储表 Sys_Enum 字段 MyPK 主键. Lab中文名, IntKey值, EnumKey枚举值,
   比如:我要获取流程实例状态 WFState 的枚举:SELECT IntKey as No,Lab as Name FROM Sys_Enum WHERE EnumKey='WFState' ORDER BY IntKey
   对于枚举字段进行分组统计的时候,实例表关联Sys_Enum 期望分组的数据是 Lab ,而不是int类型的数值。
   不能出现 Grop By EnumField 的情况,因为 EnumField 字段存储的是Int类型的值,显示出来无意义.
   正确的例子: SELECT b.Lab AS WFSta, COUNT(*) AS Count FROM ND81Rpt a JOIN Sys_Enum b ON a.WFSta = b.IntKey AND b.EnumKey = 'WFSta' WHERE a.WFState > 0 GROUP BY b.Lab
2. 人员表:Port_Emp,字段No人员编号(登录人员的账号)varchar,字段Name人员名称varchar,字段FK_Dept人员主部门.
3. 部门表:Port_Dept,字段No部门编号varchar, 字段Name部门名称,ParentNo上级编号.
4. 提供以上相关表的目的是为了能够关联查询枚举字段,外键表。

#### 我要求如下统计分析的SQL语句.
1. 按照季度统计出来,每个部门发起的流程个数据. 提示:可以根据 FK_NY,DeptName 字段获取.

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐