以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  这样的统计表达式列应该怎样设置?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4734)

--  作者:reachtone
--  发布时间:2009/10/24 17:40:00
--  这样的统计表达式列应该怎样设置?
如下图。需求如下:

1.用SQLGroupTableBuilder进行分组统计

2.分组列为"客户",另用Exprs添加一个表达式统计列“总额”

3.表达式列要求这样生成:客户名称为“A”时,面积*2;为“B”时,面积*3;为“C”时,面积*4

4、实际应用中,是直接对sql数据库统计,且是直接在后台统计(数据并未加载到table)。因此,解决方案中不能在table中增加临时列。


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

例子文件在这里,向高手求教。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.table


--  作者:HLJ
--  发布时间:2009/10/24 18:40:00
--  

...
b.Exprs.Adddef("面积","[面积]*iif([客户] = \'A\',2,iif([客户] = \'B\',3,iif([客户] = \'C\',4,0)))","总额")
...

--  作者:reachtone
--  发布时间:2009/10/24 19:27:00
--  
一楼的只是举个例子,实际上"客户"列不重复的值有N多个,每个"客户"也都有相应的系数,只能用iif吗?
[此贴子已经被作者于2009-10-24 19:53:16编辑过]

--  作者:czy
--  发布时间:2009/10/24 20:05:00
--  
可否可以在数据库中增加系数列呢?
--  作者:reachtone
--  发布时间:2009/10/24 20:12:00
--  
实在不行的话,也只有在后台数据库中加上这么一列了。
--  作者:reachtone
--  发布时间:2009/10/25 16:33:00
--  
由于外部数据库中,这个原始表的记录太多,实在不想在原始表中增加一列。
我尝试在分组统计中,用addtable的方法来生成表达式列。经测试,addtable时,如果只有一个关联列是没问题的,2个及以上的关联列就无法设置了。
这是例子,请高手支招。谢谢!
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目11.table


--  作者:gdlgh
--  发布时间:2009/10/25 18:03:00
--  
呵。自己写SQL分组语句来统计,何必一定要用SQLGroupTableBuilder进行分组统计呢?
老总也是把SQLGroupTableBuilder的属性来组成SQL字符串来统计的,是简缩版,自然受一定的限制!!
楼主本身是对SQL熟悉的,反而局限于此,难明!图片点击可在新窗口打开查看
[此贴子已经被作者于2009-10-25 18:11:29编辑过]

--  作者:reachtone
--  发布时间:2009/10/25 18:11:00
--  
以下是引用gdlgh在2009-10-25 18:03:00的发言:
呵。自己写SQL分组语句来统计,何必一定要用SQLGroupTableBuilder进行分组统计呢?

呵呵,就是因为不想写太多的sql代码,才在当初建议老六加上各种比例分析的。我这个项目中,很多统计都是由客户自行组合的,直接调用统计函数更加方便。
因为实在找不出更好的办法,现在只好考虑用代码生成iif判断表达式。但现在又碰到一个很奇怪的问题,同样的IIF表达式,刷新列时正常,用到分组统计的Exprs中就不出结果,这又是为何?

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目12.table

[此贴子已经被作者于2009-10-25 18:11:23编辑过]

--  作者:reachtone
--  发布时间:2009/10/25 18:22:00
--  
以下是引用gdlgh在2009-10-25 18:03:00的发言:
呵。自己写SQL分组语句来统计,何必一定要用SQLGroupTableBuilder进行分组统计呢?
老总也是把SQLGroupTableBuilder的属性来组成SQL字符串来统计的,是简缩版,自然受一定的限制!!
楼主本身是对SQL熟悉的,反而局限于此,难明!图片点击可在新窗口打开查看
[此贴子已经被作者于2009-10-25 18:11:29编辑过]

呵呵,我现在项目中的大部分统计都已经基于foxtable本身的统计来实现了,只有少数特殊的查询自己编写sql语句完成。
其实这种表达式在sql语句中用case when很容易的,无奈已经套上了foxtable统计的框架,改起来更麻烦。
不知10楼的问题又是因为什么?唉,总是不顺!

[此贴子已经被作者于2009-10-25 18:22:21编辑过]

--  作者:reachtone
--  发布时间:2009/10/25 18:28:00
--  
终于知道了,因为0值的问题!
晕..