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


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

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

帅哥哟,离线,有人找我吗?
紫色幽魂
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5382 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点蓝)7楼使用的sql已经是分组统计结果了,...  发帖心情 Post By:2018/7/21 12:13:00 [只看该作者]

检测人员列存在多个人员,所以需要进行多值字段统计拆分为单个人员

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望: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

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5382 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点蓝)Dim ryrq As WinForm.DateTimePicker...  发帖心情 Post By:2018/7/21 16:43:00 [只看该作者]

老师,提示错误:
'#' 附近有语法错误。
未将对象引用设置到对象的实例。
还有个检测日期显示出来的好像是月份,怎么才能改为正常显示,2018-07-20这种

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 16:52:00 [只看该作者]

#改为单引号

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5382 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点蓝)#改为单引号  发帖心情 Post By:2018/7/21 17:09:00 [只看该作者]

老师,日期怎么才能不以月分组,现在默认的是以月进行 的分组

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107813 积分:548416 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/7/21 17:10:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5382 威望:0 精华:0 注册:2015/1/23 0:31:00
  发帖心情 Post By:2018/7/21 17:27:00 [只看该作者]


[此贴子已经被作者于2018/7/21 17:27:37编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5382 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点蓝)参考:http://www.foxtable.com/webh...  发帖心情 Post By:2018/7/21 17:28:00 [只看该作者]

Dim dt As DataTable
Dim dtb As New GroupTableBuilder("个人检测量",dt1)
dtb.Groups.AddDef("检测日期",DateGroupEnum.None
dtb.Groups.AddDef("检测方法")
dtb.Groups.AddDef("检测人员")
但是我在这儿更改后就提示我:不存在名称为""的Table!删除后就正常,又不提示错误

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/7/22 18:31:00 [只看该作者]

以下是引用紫色幽魂在2018/7/21 17:28:00的发言:
Dim dt As DataTable
Dim dtb As New GroupTableBuilder("个人检测量",dt1)
dtb.Groups.AddDef("检测日期",DateGroupEnum.None
dtb.Groups.AddDef("检测方法")
dtb.Groups.AddDef("检测人员")
但是我在这儿更改后就提示我:不存在名称为""的Table!删除后就正常,又不提示错误

 

select 检测日期

 

sql语句改成

 

select convert(varchar(10), 检测日期, 120) as 检测日期

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=120700&skin=0

 

[此贴子已经被作者于2018/7/23 9:39:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
紫色幽魂
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:682 积分:5382 威望:0 精华:0 注册:2015/1/23 0:31:00
回复:(有点甜)以下是引用紫色幽魂在2018/7/21 17:2...  发帖心情 Post By:2018/7/22 22:18:00 [只看该作者]

改了之后为什么生成的表没有数据了,一个空表
Dim ryrq As WinForm.DateTimePicker = e.Form.Controls("每日人员日期")
Dim dt1 As DataTable
Dim sql As String = "sel ect 各检测员检测统计表_检测日期, 各检测员检测统计表_检测方法, 各检测员检测统计表_检测人员,sum(各检测员检测统计表_检测量) as 各检测员检测统计表_检测量,sum(各检测员检测统计表_返修量) as 各检测员检测统计表_返修量 from (sel ect convert(varchar(10), 首检_检测日期) as 各检测员检测统计表_检测日期,首检_检测长度 AS 各检测员检测统计表_检测量,首检_检测人员 as 各检测员检测统计表_检测人员,首检_返修长度 AS 各检测员检测统计表_返修量,检测方法 AS 各检测员检测统计表_检测方法,地点 as 检测地点 from {无损_检测明细} union all " & _
"Sel ect convert(varchar(10), 一次复检_检测日期) As 各检测员检测统计表_检测日期,一次复检_检测长度 as 各检测员检测统计表_检测量,一次复检_检测人员 as 各检测员检测统计表_检测人员,一次复检_返修长度 as 各检测员检测统计表_返修量,检测方法 as 各检测员检测统计表_检测方法,地点 as 检测地点 from {无损_检测明细} union all " & _
"Sel ect convert(varchar(10), 二次复检_检测日期) As 各检测员检测统计表_检测日期,二次复检_检测长度 as 各检测员检测统计表_检测量,二次复检_检测人员 as 各检测员检测统计表_检测人员,二次复检_返修长度 as 各检测员检测统计表_返修量,检测方法 as 各检测员检测统计表_检测方法,地点 as 检测地点 from {无损_检测明细}) as a where 各检测员检测统计表_检测日期 = '" & ryrq.Value & "' and 检测地点 <> '现场' GROUP BY 各检测员检测统计表_检测日期,各检测员检测统计表_检测方法,各检测员检测统计表_检测人员" 
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = sql
dt1 = cmd.ExecuteReader()

 回到顶部
总数 26 上一页 1 2 3 下一页