急:关于多表(〉100)统计

elite_cen 2005-05-16 12:44:04
各位大虾:
表的结构相同,每个表内的数据不一样,而且每个表内数据量也比较大。我现在要统计所有表的一个属性的总和(count),请问我应该如何实现,谢谢~~~~~~~~~~```
在线等待中~~~~~~~~~`
...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tangtangno1 2005-05-17
  • 打赏
  • 举报
回复
我猜楼主系统肯定是产生了一些类似于每月记录单独存放到一个表里的现象吧,如果是这样的话这些表的名字应该都用年份月份的数字作为表名一部分的了,这种情况你只能写循环挨个统计每个表了
隐患一开始设计数据库的时候就埋下了,现在的库表结构没有更好的办法了;除非建立一个新的表,结构与那些相同,只是要增加一个相应的月份作为区分冰用来当作主键,才可以实现一个sql就能统计长期历史数据。相信楼主这次遇到了这个问题,如果以后类似的数据挖掘分析要求还很多,不改库表结构还是个麻烦
eagle81 2005-05-16
  • 打赏
  • 举报
回复
你把
LIKE 'FJ%'
去掉就好了
刚才测试的忘了去掉了
没有问题,直接执行就行了
eagle81 2005-05-16
  • 打赏
  • 举报
回复
DECLARE
v_sql VARCHAR2(4000);
v_count INTEGER;
v_sum INTEGER;
v_cnt INTEGER;
TYPE table_type IS TABLE OF User_All_Tables%ROWTYPE INDEX BY BINARY_INTEGER;
v_table table_type;
CURSOR cour IS SELECT * FROM User_All_Tables WHERE table_name LIKE 'FJ%';
BEGIN
v_sum:=0;v_count:=0;
OPEN cour;
FETCH cour BULK COLLECT INTO v_table;
CLOSE cour;

FOR i IN 1..v_table.COUNT LOOP
v_sql:='SELECT COUNT(*) FROM '||v_table(i).table_name;
EXECUTE IMMEDIATE v_sql INTO v_count;

v_sum:=v_sum+v_count;
END LOOP;
dbms_output.put_line(v_sum);

END;
elite_cen 2005-05-16
  • 打赏
  • 举报
回复
是这个意思,但我要是有100-200个表,我不会要写100-200个select吧
我就是想问有没有不用写那么多,直接统计多表数据的
沝林 2005-05-16
  • 打赏
  • 举报
回复
不好意思,写错了
select count(*) from ( select 属性 from t1 union all select 属性 from t2... union all select 属性 from tn )
沝林 2005-05-16
  • 打赏
  • 举报
回复
是这样吗?
select count(*) from ( select 属性 from t1 union all select 属性 from t2... union all select 属性 from tn ) where 属性 = '属性值'
everydream 2005-05-16
  • 打赏
  • 举报
回复
select
(select count('y') from tab1)
+(select count('y') from tab2)
+(select count('y') from tab3)
+ ……
from
dual;

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧