大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
create table NEED --用料需求表
创新互联于2013年创立,是专业互联网技术服务公司,拥有项目网站设计、成都网站设计网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元天全做网站,已为上家服务,为天全各地企业和个人服务,联系电话:18980820575
(
goodsno VARCHAR2(100),
prono VARCHAR2(100),
needqty NUMBER,
needbatch NUMBER
);
create table REQ --备料申请表
(
goodsno VARCHAR2(100),
prono VARCHAR2(100),
reqqty NUMBER
);
with t as
(select a.needbatch,
a.prono,
a.goodsno,
a.needqty,
b.reqqty - sum(a.needqty) over(order by a.prono, a.goodsno, a.needbatch) diffqty
from need a,
req b
where a.goodsno = b.goodsno
and a.prono = b.prono)
select t.needbatch,
t.prono,
t.goodsno,
t.needqty,
case
when t.diffqty = 0 then
t.needqty
else
case
when t.needqty + t.diffqty 0 then
t.needqty + t.diffqty
else
end
end qty
from t
弄个字符串变量,设个游标,用括号里那一串;
然后遍历表名,每找到一个表名,就在字符串变量里拼上一段:=
'select
*
from
'||table_name||';',
然后用execute
immediate执行;
然后读下一个表名,直至遍历完毕。
大致就是这么个意思。
1、先查询本库的所有表,测试sql,select * from user_tables t where table_name like 'TEST%';可以看到有多张表;
2、查询一共有几张数据表,
select count(*) from user_tables t where table_name like 'TEST%';
3、编写脚本,查询TEST开头表,每个表的记录数,
declare
v_sql varchar2(200);
v_cnt number(10);
begin
for v_tab in (select table_name from user_tables t where table_name like 'TEST%') loop
v_sql := 'select count(*) from '|| v_tab.table_name;
execute immediate v_sql into v_cnt;
dbms_output.put_line(v_tab.table_name||':'||v_cnt);
end loop;
end;
4、执行该sql,在输出窗口,可以看到每个表的输出结果,
TEST_A:4
TEST_CERTNO:6
TEST_CLASS:4
TEST_COL_1:20
TEST_COL_2:100
TEST_CONNECT:4
TEST_DATE:0
TEST_DATE_1:199
TEST_DATE_2:99
TEST_JOB:6
TEST_LOCK:2
TEST_LOG:999
TEST_MID:328
TEST_SALESSTATISTICS:9999
TEST_STUDENT:6
TEST_SUBSTR:4
TEST_UPDATE:3
TEST_UP_A:6
TEST_UP_B:3
TEST_UP_LIKE:6
按就诊号算 还算合理点
select a.诊断名称,count(distinct a.就诊号),sum(b.总费用),round(sum(b.总费用)/count(distinct a.就诊号),2) from a left join b on a.就诊号=b.就诊号 where b.费用金额 0
可以通过district来取出字段,之后通过count计算总数量。
sql:select count(district id) from tablename;
如果id字段没有空值的话,可以通过count统计字段的总数量(字段内容可能重复)。
sql:select count(id) from tablename;
在oracle10g中统计所有表的数据量可以使用如下语句:
select sum(NUM_ROWS) from dba_tables where owner like 'SCHEMA';
说明一下,以上语句必须用dba账户登录才可以使用,其中的SCHEMA参数就是当前用户名。
chema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links。
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema。这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因。
最简单的理解:以你计算机的用户为例,如果你的计算机有3个用户,那么每个用户登录系统看到的(使用的)功能是可以不相同的!