select
(select count('y') from tab1)
+(select count('y') from tab2)
+(select count('y') from tab3)
+ ……
from
dual;
(select count('y') from tab1)
+(select count('y') from tab2)
+(select count('y') from tab3)
+ ……
from
dual;
解决方案 »
- 如何安装与配置?
- 100分,informix导出文本文件时遇‘|’,前面自动加‘/’问题~
- 请教一个分组查询的SQL
- 如何知道某一条记录是否被锁定?
- 请问oracle里面的基本问题
- MS-SQL Server的查询语句换成oracle 怎么写?? #### 100%结贴
- 请问在ORACLE8.16中是否不支持FLOAT数据类型?
- oracle 9i for windows 安装问题【急急急】
- 如何根据成本来确定执行时间???
- 谁知道OUTLN这个用户是干什么用的?
- 讨论:论坛数据库如何设计会更优?请大家踊跃参加。
- 请问在字段是否相等的比较时候,空值和空值能否相等,如果不想分开判断,能不能有简单的语句实现这种相等的判断呢
select count(*) from ( select 属性 from t1 union all select 属性 from t2... union all select 属性 from tn ) where 属性 = '属性值'
select count(*) from ( select 属性 from t1 union all select 属性 from t2... union all select 属性 from tn )
我就是想问有没有不用写那么多,直接统计多表数据的
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;
LIKE 'FJ%'
去掉就好了
刚才测试的忘了去掉了
没有问题,直接执行就行了
隐患一开始设计数据库的时候就埋下了,现在的库表结构没有更好的办法了;除非建立一个新的表,结构与那些相同,只是要增加一个相应的月份作为区分冰用来当作主键,才可以实现一个sql就能统计长期历史数据。相信楼主这次遇到了这个问题,如果以后类似的数据挖掘分析要求还很多,不改库表结构还是个麻烦