以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于交叉统计的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=140159)

--  作者:ap9709130
--  发布时间:2019/8/30 15:30:00
--  关于交叉统计的问题
 老师,
关于交叉统计的代码如下:

Dim sql As String
sql = "S el e ct (sel ec t 客户名称 from {客户汇总} where _Identify = {客户跟进表}.CID) as 客户名称,\'bb\' as 业务员,时间 as 送货日期 from {客户跟进表} where 录入人 In (\'陈达锋\') And 报告内容 Is not null And 回复 = 0"
Dim b As New CrossTableBuilder("客户分析",sql, "sjy")
b.HGroups.AddDef("客户名称") \'添加客户列用于水平分组
b.HGroups.AddDef("业务员") \'添加客户列用于水平分组
b.HGroups.AddDef("送货日期",DateGroupEnum.year,"年份")
b.VGroups.AddDef("送货日期",DateGroupEnum.month,"{0}月")
b.Totals.AddDef("客户名称",AggregateEnum.count,"金额")
b.HorizontalTotal = True
b.Build \'生成统计表

这个代码中的sql 语句是没有问题的,生成出来的数据是对的.可是为什么不能生成交叉表.也不报错.但就是没数据.真奇怪.

--  作者:有点蓝
--  发布时间:2019/8/30 15:40:00
--  
这个sql确定没有问题?可以正常执行?SQL语句没有返回统计表用到的列

其次说个题外话,建议不要使用_Identify 这种自增数据进行业务关联,自增数据是不可控的,而且并不是固定的,数据库只能保证自增列数据都是唯一的,无法保证值是不变的。


--  作者:ap9709130
--  发布时间:2019/8/30 15:45:00
--  
 有点蓝老师
    sql 语句测试过肯定没有问题.在执行SQL中能生成表.而且数据都是对的. 系统是以前的历史问题.现在已经在慢慢更改中了.

关键的原因是为什么不能生成交叉表?

--  作者:有点蓝
--  发布时间:2019/8/30 15:47:00
--  
完整sql发上来看看
--  作者:ap9709130
--  发布时间:2019/8/30 15:56:00
--  
 sql = "S el e ct (sel ec t 客户名称 from {客户汇总} where _Identify = {客户跟进表}.CID) as 客户名称,\'bb\' as 业务员,时间 as 送货日期 from {客户跟进表} where 录入人 In (\'陈达锋\') And 报告内容 Is not null And 回复 = 0"

这个就是完整的sql.出来的表如图:


图片点击可在新窗口打开查看此主题相关图片如下:222.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2019/8/30 16:10:00
--  
改为这个SQL试试

Select 客户名称,\'bb\' as 业务员,时间 as 送货日期 from {客户跟进表} inner join {客户汇总} on {客户汇总}.[_Identify] = {客户跟进表}.CID where 录入人 In (\'陈达锋\') And 报告内容 Is not null And 回复 = 0

--  作者:ap9709130
--  发布时间:2019/8/30 16:21:00
--  
 试了. 还是一样.

--  作者:ap9709130
--  发布时间:2019/8/30 16:22:00
--  
 不会报错. 就一个空白行. 无内容

--  作者:ap9709130
--  发布时间:2019/8/30 16:30:00
--  
 还发现一个更有趣的问题,代码如下:

 Dim sql As String
sql = "Select 客户名称,业务员,{销售订单主表}.送货日期,Round({销售订单明细}.产品数量*{销售订单明细}.产品销售价,2) as 金额 ..."
Dim b As New CrossTableBuilder("客户分析",sql, sjy)
b.HGroups.AddDef("客户名称") \'添加客户列用于水平分组
b.HGroups.AddDef("业务员") \'添加客户列用于水平分组
b.HGroups.AddDef("送货日期",DateGroupEnum.year,"年份")
b.VGroups.AddDef("送货日期",DateGroupEnum.month,"{0}月")
b.Totals.AddDef("金额")
b.Decimals = 2
b.HorizontalTotal = True
b.Build \'生成统计表

另外一个数据源,sql 语句生成的表也没有问题,都正常. 但是这个交叉统计生成又没有问题.可以生成.怎么会这样 ?



--  作者:ap9709130
--  发布时间:2019/8/30 16:35:00
--  
 两个表的列都是一样的. 一个表多了一列金额.统计汇总没有问题. 但统计单数就会出现问题