以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表统计问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85882)

--  作者:实话实说
--  发布时间:2016/6/4 15:42:00
--  跨表统计问题

我想一步得到表D订单数量的统计数据(对表A、表B、表C的数量列按代码分组统计后求和,统计条件:逻辑列为空)

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:跨表统计.foxdb

[此贴子已经被作者于2016/6/4 15:56:03编辑过]

--  作者:Hyphen
--  发布时间:2016/6/4 16:28:00
--  
创建查询表http://www.foxtable.com/help/topics/2329.htm



Dim sql As String = "sel ect 代码,sum(计划数量) as 数量 from {表A} where OK is null or OK=false group by 代码"
 sql &= " union all Sele ct 代码,sum(完工数量) As 数量  from {表B} where 发货 Is null Or 发货=False group by 代码"
 sql &=" union all Sele ct 代码,sum(出货数量) As 数量  from {表C} where 出货 Is null Or 出货=False group by 代码"

Dim g As New GroupTableBuilder("统计表1", sql)
g.Groups.AddDef("代码")
g.Totals.AddDef("数量")
g.Build()
MainTable = Tables("统计表1")



--  作者:实话实说
--  发布时间:2016/6/4 17:08:00
--  

我不想建统计表,直接在表D得到结果


--  作者:Hyphen
--  发布时间:2016/6/4 17:19:00
--  
For Each dr As Row In Tables("表D").Rows
    Dim a = Tables("表A").Compute("sum(计划数量)",CExp("代码=\'{0}\' and OK = false ",dr("代码")))
    Dim b = Tables("表B").Compute("sum(完工数量)",CExp("代码=\'{0}\' and 发货 = false ",dr("代码")))
    Dim c = Tables("表C").Compute("sum(出货数量)",CExp("代码=\'{0}\' and 出货 = false",dr("代码")))
    dr("订单数量") = a+b+c
Next

--  作者:实话实说
--  发布时间:2016/6/4 17:38:00
--  

谢了