壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 6799|回复: 19

Oracle Form Data Block 怎样用处group by 的效果

[复制链接]
发表于 2007/1/16 17:28:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我在Form里定义一个block,相对其进行分组的操作,能达到么?
例如表里有两列。
ID, number, amount
1,  100      ,1000
2,  100      ,2000
3,  200      ,3000
4,  200      ,1000
5,  300      ,6000
想得到结果
number, amount
100     ,3000
200     ,4000
300     ,6000

哪位朋友能帮帮忙!!!
先谢了!!!
发表于 2007/1/16 18:05:37 | 显示全部楼层
这个问题怎么看起来有点奇怪, 不知道是楼主打错了还是我理解错了, 例如表里有二例, 那ID那一列了, 如果照你所说的, SQL应该这样写

select number, sum(amount) amount
from table
group by number
发表于 2007/1/16 18:06:58 | 显示全部楼层
sum(amount)
group by number 不行吗
 楼主| 发表于 2007/1/16 18:07:40 | 显示全部楼层
是的,这在sql里可以写,但是在form里就不知道怎么写了
发表于 2007/1/16 18:09:07 | 显示全部楼层
不好意思, 是我看错了题目, 如果在FORM里面的话, 建个视图就可以实现, block引用view
 楼主| 发表于 2007/1/16 18:21:37 | 显示全部楼层
不建视图是不是就达不到这样效果了呢?
发表于 2007/1/16 18:31:47 | 显示全部楼层

不建视图也是可以的

方法1
1. item1:   database item name = number, 好像要设成primary key=yes
2. item2:   database item name = sum(amount) , 好像要加alias,
3. where clause : where ..... group by number.
方法2:
data source 里面选from clause, 里面写那个aggerated sql.
发表于 2007/1/16 18:42:04 | 显示全部楼层
还是建个视图吧,方便多了.
 楼主| 发表于 2007/1/16 22:18:02 | 显示全部楼层
To Terence:我碰到的问题见个视图解决不了啊
To orapeasant:的方法能够解决一定问题,兄弟知道怎么想这个sql里面加参数么?我想在里面加参数引用其他block.item的值
发表于 2007/1/17 08:42:58 | 显示全部楼层
回楼主,按你提的问题的描述,建个视图就可以解决了
如果还有什么新的问题,请描述清楚,大家才可以出主意。
发表于 2007/1/17 08:49:58 | 显示全部楼层
对 我好像在itpub 里也看见这个问题了
发表于 2007/1/17 09:45:32 | 显示全部楼层
我觉得建个视图是最简单的, 你说建视图你的问题解决不了, 你可以把你的问题贴上来, 大家帮你想办法
 楼主| 发表于 2007/1/17 12:56:02 | 显示全部楼层
我在Form里定义一个block,相对其进行分组的操作,能达到么?
例如表里有两列。
ID, number, amount
1,  100      ,1000
2,  100      ,2000
3,  200      ,3000
4,  200      ,1000
5,  300      ,6000
想得到结果
number, amount
100     ,3000
200     ,4000
300     ,6000

是这样的,我列出了3列,还有两个条件.
1.ID作为输入参数,要求ID大于输入值的
2.一个标志参数来表明要不要考虑,如果参数输入为No.  1中输入的参数就不考虑了。
如果建view,这两个参数不知道,也sum不了。
通过orapeasant 的方法可以达到sum功能,可是不知道怎么加参数到那个SQL里。
现在如果没有别的方法,我知道个笨方法就是datasource选择procedure了。
发表于 2007/1/17 13:13:47 | 显示全部楼层
你这么说的话,这个view就需要"动态创建"了,所以你还是考虑一下orapeasant的第二个方法,把这些条件写在WHERE语句里,看能不能解决问题。
发表于 2007/1/17 13:15:17 | 显示全部楼层
自己做个查询按钮,然后在按钮的‘WHEN-BUTTON-PRESSED’中写代码,然后将结果显示出来。。。。。。
发表于 2007/1/18 11:34:29 | 显示全部楼层

datasource可以在pre-query里用set_block_property改的

我一般都是这样做.
1. design time时, query data source type = 'FROM clause query', query data source name写一个dummy的from clause, 譬如, (select 'a' col1, 'b' col2 from dual)
2. 在block的pre-query里面如下:
declare
   vs_sql  varchar2(2000);
begin
   vs_sql := '(select colu1 col1, colu2 col2 from my_table where colu3= '||:block.item ||')'
   set_block_property(QUERY_DATA_SOURCE_NAME, vs_sql);
end;

column 的alias 要和block design time时用的一样. 有时候 把上面的放在key-exeqry里也可以.
发表于 2007/1/18 15:02:46 | 显示全部楼层
to zhongxu_liu:这个参数你打算怎么给?查询时手工输入还是需要一个全局变量动态的给?如果是前者,建议做一个查询对话框;如果是后者,考虑把block的数据源写成from子句,通过一个函数或者parameter把这两个动态数传递给SQL语句,除非我没有理解你的意思,不然应该没什么问题了
发表于 2008/11/3 15:32:34 | 显示全部楼层
不太明白楼主的意思!
发表于 2009/1/8 22:18:43 | 显示全部楼层
做视图啊
发表于 2010/1/12 14:20:21 | 显示全部楼层
做个视图!  e
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/30 09:28 , Processed in 0.024195 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表