想实现从3张表中取出数据形成一张表,但里面涉及了很多时间条件,请教一下如何取出一段时间的数据。
create table BMZH
(
  H_DATE    CHAR(10) not null,
  ZJZH      INTEGER not null,
  ZCZE      NUMBER(38,4),
  KYZJ      NUMBER(38,4),
  QCZC      NUMBER(38,4),
  SUM_ZCZK  NUMBER(38,4),
  SUM_WDQHG NUMBER(38,4),
  SUM_QTZC  NUMBER(38,4)
)create table QHMX
(
  H_DATE CHAR(10) not null,
  ZJZH   INTEGER not null,
  HYDM   VARCHAR2(15),
  CCHJ   NUMBER(38,4),
  SUM_SZ NUMBER(38,4),
  MCBZJ  NUMBER(38,4),
  DRYK   NUMBER(38,4)
)create table ZJLS
(
  H_DATE CHAR(10) not null,
  ZJZH   INTEGER not null,
  YWBZ   VARCHAR2(15),
  ZJFSE  NUMBER(38,4),
  HZJYE  NUMBER(38,4)
)
insert into BMZH (H_DATE, ZJZH, ZCZE, KYZJ, QCZC, SUM_ZCZK, SUM_WDQHG, SUM_QTZC)
values ('20110510', 2024, 15720882.83, 10337802.83, null, 0, null, 0);
insert into BMZH (H_DATE, ZJZH, ZCZE, KYZJ, QCZC, SUM_ZCZK, SUM_WDQHG, SUM_QTZC)
values ('20110510', 204, 36457840.73, 86087.4, null, 36371753.33, null, 0);
insert into BMZH (H_DATE, ZJZH, ZCZE, KYZJ, QCZC, SUM_ZCZK, SUM_WDQHG, SUM_QTZC)
values ('20110511', 204, 36644646.05, 83314.2, null, 36558558.65, null, 2773.2);
insert into BMZH (H_DATE, ZJZH, ZCZE, KYZJ, QCZC, SUM_ZCZK, SUM_WDQHG, SUM_QTZC)
values ('20110511', 2024, 15761922.83, 10384998.83, null, 0, null, 0);
insert into BMZH (H_DATE, ZJZH, ZCZE, KYZJ, QCZC, SUM_ZCZK, SUM_WDQHG, SUM_QTZC)
values ('20110512', 204, 36209199.44, 83314.2, null, 36123112.04, null, 2773.2);
insert into BMZH (H_DATE, ZJZH, ZCZE, KYZJ, QCZC, SUM_ZCZK, SUM_WDQHG, SUM_QTZC)
values ('20110512', 2024, 16176882.83, 10862202.83, null, 0, null, 0);insert into QHMX (H_DATE, ZJZH, HYDM, CCHJ, SUM_SZ, MCBZJ, DRYK)
values ('20110510', 2024, 'IF1103', 38, -35768640, 5365296, -259920);
insert into THS_QHMX (H_DATE, ZJZH, HYDM, CCHJ, SUM_SZ, MCBZJ, DRYK)
values ('20110511', 2024, 'IF1103', 38, -37024920, 5553738, -1256280);
insert into THS_QHMX (H_DATE, ZJZH, HYDM, CCHJ, SUM_SZ, MCBZJ, DRYK)
values ('20110512', 2024, 'IF1103', 38, -37054560, 5558184, -29640);insert into ZJLS (H_DATE, ZJZH, YWBZ, ZJFSE, HZJYE)
values ('20110510', 204, '增加资金', 370000000, 370937670.8);
insert into ZJLS (H_DATE, ZJZH, YWBZ, ZJFSE, HZJYE)
values ('20110511', 2024, '增加资金', 130000000, 254632112.69);
insert into ZJLS (H_DATE, ZJZH, YWBZ, ZJFSE, HZJYE)
values ('20110512', 204, '增加资金', 400000000, 516427928.49);
想形成下面的表,并且能取出一段时间开始时间,结束时间之内的数据,需要有H_DATE>='开始时间'AND H_DATE<='结束时间'
H_DATE ZJZH ZZC CCSZ KYZJ DRYK LJYK QCZC ZRZC DRZJHB LJZJHB每个字段的取值说明如下:
H_DATE:BMZH..H_DATE
ZJZH:BMZH..ZJZH
ZZC:BMZH..ZCZE
CCSZ:CASE WHEN ZJZH=204
          THEN BMZH..SUM_ZCZK+SUM_QTZC
          WHEN ZJZH=2024 THEN QHMX..MCBZJ
KYZJ:BMZH..KYZJ
DRYK:CASE WHEN ZJZH=204
          THEN ZZC-ZRZC-DRZJHB
          WHEN ZJZH=2024 THEN QHMX..DRYK"
LJYK:ZZC-QCZC-LJZJHB
QCZC:BMZH..QCZC
ZRZC:前一天的BMZH..ZCZE --该值是要取前一天的ZCZE作为当天的ZRZC
DRZJHB:ZJLS..ZJFSE
LJZJHB:ZJLS..SUM(ZJFSE)   --小于当前日期的数据累加

解决方案 »

  1.   

    其实你都没说清楚你是想要怎样的数据结构,是以哪个表的数据为依据,还是说必须每个表多必须存在你说的日期区间<就是所谓的内联>...select a.H_DATE, a.ZJZH,a.KYZJ,b.DRYK,c.zjzh from BMZH a,QHMX b,ZJLS c 
    where a.zjzh=b.zjzh and c.zjzh = b.zjzh and 接你的日期;--这个是内联接的写法
      

  2.   

    第一步:查询出来你要插入到另外表的记录(字段最好与创建的表的字段顺序一样的)
    第二步:insert into table (select * from 第一步的值)
    第三步:提交、
      

  3.   

    来,我来跟你说说。这样的sql语句并不难写,我提供方法,让大家来参考!因为我之前遇到过类似的问题!
    假如你又三张表 a 、b、c可以这样
    select a.字段,b.字段,c.字段  from (select * from a)a,(select * from b)b,(select * from c)c where 这里去你筛选的条件+表的连接条件
      

  4.   

    想看清楚  还是晕了
    1、表间的联系
    2、decode(ZJZH,'204',……,'2024',……,……)
    3、取什么前一天的 就不知道了
      

  5.   

    用 to_date('','')先将char转换成date类型
    条件用BETWEEN date1 AND date2
    date1 和 date2也要用to_date 函数
      

  6.   

    举个例子:假如有 x,y,z三张表的数据,汇总到表t:create table t (pk int ,a int ,b int ,c int);insert into t (pk,a) select 0,1 from x;
    insert into t (pk,b) select 0,2 from y;
    insert into t (pk,c) select 0,3 from z;insert into t(pk,a,b,c) 
    select pk,sum(a),sum(b),sum(c) 
    from t 
    where pk = 0 
    group by pk;delete from t where pk = 0;
    commit;