Foxtable(狐表)用户栏目专家坐堂 → [求助]怎么统计多值字段统计后台数据


  共有2776人关注过本帖树形打印复制链接

主题:[求助]怎么统计多值字段统计后台数据

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/20 20:10:00 [显示全部帖子]

Dim sql As String = "select 检测日期, 检测人员,sum(检测长度) as 检测长度,sum(返修长度) as 返修长度 from (select 首检_检测日期 as 检测日期,首检_检测长度 AS 检测长度,首检_检测人员 as 检测人员,首检_返修长度 AS 返修长度 from {无损_检测明细} union all " & _
"Select 一次复检_检测日期 As 检测日期,一次复检_检测长度 as 检测长度,一次复检_检测人员 as 检测人员,一次复检_返修长度 as 返修长度 from {无损_检测明细} union all " & _
"Select 二次复检_检测日期 As 检测日期,二次复检_检测长度 as 检测长度,二次复检_检测人员 as 检测人员,二次复检_返修长度 as 返修长度 from {无损_检测明细}) group by 检测日期, 检测人员 "

Dim cmd As new SQLCommand
cmd.CommandText = sql
e.Form.Controls("Table1").Table.datasource = cmd.ExecuteReader

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/20 22:32:00 [显示全部帖子]

参考:http://www.foxtable.com/webhelp/scr/2344.htm

"Select 二次复检_检测日期 As 检测日期,二次复检_检测长度 as 检测长度,二次复检_检测人员 as 检测人员,二次复检_返修长度 as 返修长度 from {无损_检测明细}) where 检测日期='" & 单元格内输入的日期 & "' group by 检测日期, 检测人员 "

 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 9:56:00 [显示全部帖子]

"Se/ect 二次复检_检测日期 As 检测日期,二次复检_检测长度 as 检测长度,二次复检_检测人员 as 检测人员,二次复检_返修长度 as 返修长度 from {无损_检测明细}) as a where 检测日期 = '"& ryrq.Value &"' GROUP BY 检测日期,检测人员"  

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 11:49:00 [显示全部帖子]

7楼使用的sql已经是分组统计结果了,不需要再次统计

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 15:04:00 [显示全部帖子]

Dim ryrq As WinForm.DateTimePicker = e.Form.Controls("每日人员日期")
Dim dt1 As DataTable
Dim sql As String = "select 检测日期, 检测方法, 检测人员,sum(检测量) as 检测量,sum(返修量) as 返修量 from (select 首检_检测日期 as 检测日期,首检_检测长度 AS 检测量,首检_检测人员 as 检测人员,首检_返修长度 AS 返修量,检测方法 AS 检测方法 from {无损_检测明细} union all " & _
"Select 一次复检_检测日期 As 检测日期,一次复检_检测长度 as 检测量,一次复检_检测人员 as 检测人员,一次复检_返修长度 as 返修量,检测方法 as 检测方法 from {无损_检测明细} union all " & _
"Select 二次复检_检测日期 As 检测日期,二次复检_检测长度 as 检测量,二次复检_检测人员 as 检测人员,二次复检_返修长度 as 返修量,检测方法 as 检测方法 from {无损_检测明细}) as a where 检测日期 = #" & ryrq.Value & "# GROUP BY 检测日期,检测方法,检测人员"
Dim cmd As new SQLCommand
cmd.ConnectionName = "检测系统"
cmd.CommandText = sql
dt1 = cmd.ExecuteReader()
Dim lst As new List(of DataRow)
For Each  dr1 As DataRow In dt1.Select("检测人员 like '%,%'")
    lst.Add(dr1)
    Dim rys() As String = dr1("检测人员").Split(",")
    For Each ry As String In rys
        Dim v As Double = dr1("检测量") / rys.Length '获得平均之后每个检测人员的检测量
        Dim v1 As Double = dr1("返修量") / rys.Length
        Dim dr2 As DataRow = dt1.AddNew()
        dr2("检测人员") = ry '新增行的工号列设置为此工号
        dr2("检测方法") = dr1("检测方法") '设置增行的产品
        dr2("检测日期") = dr1("检测日期")
        dr2("检测量") = v '加上平均后的产量
        dr2("返修量") = v1
    Next
Next

For Each  dr1 As DataRow In lst
    dr1.Delete
Next

Dim dt As DataTable
Dim dtb As New GroupTableBuilder("个人检测量",dt1)
dtb.Groups.AddDef("检测日期")
dtb.Groups.AddDef("检测方法")
dtb.Groups.AddDef("检测人员")
dtb.Totals.AddDef("检测量")
dtb.Totals.AddDef("返修量")
e.Form.Controls("Table1").Table.datasource = dtb.BuildDataSource

 回到顶部
帅哥,在线噢!
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 16:52:00 [显示全部帖子]

#改为单引号

 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107133 积分:544908 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 17:10:00 [显示全部帖子]


 回到顶部