以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  分组统计提示错误:已有相同的键  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93865)

--  作者:fubblyc
--  发布时间:2016/12/8 18:10:00
--  分组统计提示错误:已有相同的键

如下分组统计提示错误:已有相同的键。不知道是错在哪里

 

    Dim b1 As New SQLGroupTableBuilder("统计表1","员工周分析明细")
    Dim dt1 As fxDataSource
    b1.C
    b1.Groups.AddDef("门店") \'根据产品分组
    b1.Groups.AddDef("营业员") \'根据产品分组
    b1.Totals.AddDef("销售金额","本周销售金额_实际完成") \'对数量进行统计
    b1.Filter = filter
    dt1= b1.BuildDataSource()

 

    Dim b5 As New SQLGroupTableBuilder("统计表5","员工周分析明细")
    Dim dt5 As fxDataSource
    b5.C
    b5.Groups.AddDef("门店") \'根据产品分组
    b5.Groups.AddDef("营业员") \'根据产品分组
    b5.Groups.AddDef("单号") \'根据产品分组
    b5.Totals.AddDef("销售金额",AggregateEnum.max,"周大单金额") \'对数量进行统计
    b5.Filter = filter
    dt5= b5.BuildDataSource()

Dim nms As String() =  {"门店","营业员"}
dt1.combine(nms,dt5,nms)

 

Tables(e.Form.Name & "_table3").DataSource = dt1

 

 

[此贴子已经被作者于2016/12/8 18:52:51编辑过]

--  作者:fubblyc
--  发布时间:2016/12/8 19:38:00
--  

刚看了其他帖子,说 combine需要包含所有的分组

我如下做是可行,那是否还有别的更好的方案呢?

先在视图按单号分组统计每一单的金额:

SELEC T
DateName(year,dbo.[销售明细].[销售日期]) AS [年份],
case when DateName(weekday,dbo.[销售明细].[销售日期]) = \'星期日\' then cast(datename(week,dbo.[销售明细].[销售日期])as int)-1 
else
cast(datename(week,dbo.[销售明细].[销售日期])as int)
end AS [周次],

dbo.[销售明细].[门店],
dbo.[销售明细].[营业员],
dbo.[销售明细].[单号],
sum(dbo.[销售明细].[销售金额]) as 销售金额

FROM
dbo.[销售明细]
group BY
dbo.[销售明细].[门店],
dbo.[销售明细].[营业员],
dbo.[销售明细].[单号],
dbo.[销售明细].[销售日期]

 

再在FT里做周大单金额 的统计:

    Dim b5 As New SQLGroupTableBuilder("统计表5","员工周销售单号")
    Dim dt5 As fxDataSource
    b5.C
    b5.Groups.AddDef("门店") \'根据产品分组
    b5.Groups.AddDef("营业员") \'根据产品分组
    b5.Totals.AddDef("销售金额",AggregateEnum.Max,"周大单金额") \'根据产品分组
    b5.Filter = filter
    dt5= b5.BuildDataSource()