以文本方式查看主题 - 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.出来的表如图: |
-- 作者:有点蓝 -- 发布时间: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 -- 两个表的列都是一样的. 一个表多了一列金额.统计汇总没有问题. 但统计单数就会出现问题 |