T_IN(入库表)
字段 中文名         类型         约束 备注
NO 序号        VARCHAR2(8)  PK
DT-IN 入库时间 CHAR(8) Yyyymmdd格式
CD-STYLE 产品代码 CHAR(1)
QT-IN 入库数量 NUNBER
TP-IN 入库类型 CHAR(1) 0:入库  1:入库退货
DS-MEMO  备注          VARCHAR2(100)
T_OUT(出库表)
字段   中文名 类型         约束 备注
NO   序号        VARCHAR2(8) PK
DT-OUT   出库时间 CHAR(8) Yyyymmdd格式
CD-STYLE  产品代码 CHAR(1)
QT- OUT   出库数量 NUNBER
TP- OUT   出库类型 CHAR(1) 0:入库  1:入库退货
DS-MEMO 备注 VARCHAR2(100) 题目:
十、查询入库表中每天各种产品的总入库量(不包括入库退货)并且如果入库日期和产品代码与出库表中都相同的记录,要把出库总量(不包括出库退货)也查出来。

解决方案 »

  1.   


    select CD-STYLE as '²úÆ·´úÂë',DT-IN as 'ʱ¼ä',(case when £¨T_IN.CD-STYLE=T_OUT.CD-STYLE and T_IN.DT-IN=T_OUT.DT-OUT ) then sum(QT-IN) as 'Èë¿â×ÜÁ¿',
    sum(QT- OUT) as '³ö¿â×ÜÁ¿' else  sum(QT-IN) as 'Èë¿â×ÜÁ¿' end) from T_IN ,T_OUT
    where TP-IN='0' and TP- OUT='0'
     group by CD-STYLE,DT-IN
      

  2.   

    select  CD-STYLE as '产品代码',DT-IN as '时间',(case when (T_IN.CD-STYLE=T_OUT.CD-STYLE and T_IN.DT-IN=T_OUT.DT-OUT ) then sum(QT-IN) as '入库总量',
    sum(QT- OUT) as '出库总量' else  sum(QT-IN) as '入库总量' end)  from T_IN ,T_OUT
    where TP-IN='0' and TP- OUT='0'
    group by CD-STYLE,DT-IN
      

  3.   

    select a.dt_in,a.cd_style,sum(a.qt_in),
      sum(b.qt_out)
    from t_in a left join t_out b
    on a.dt_in=b.dt_out
      and a.cd_style=b.cd_style
      and b.tp_out='0'
    group by a.cd_style,dt_in
    order by a.dt_in,cd_style
      

  4.   

    tp_in只统计为0的项的话再加个条件
    select a.dt_in,a.cd_style,sum(a.qt_in), 
      sum(b.qt_out) 
    from t_in a left join t_out b 
    on a.dt_in=b.dt_out 
      and a.cd_style=b.cd_style 
      and b.tp_out='0' 
    where a.tp_in='0'
    group by a.cd_style,dt_in 
    order by a.dt_in,cd_style
      

  5.   

    select nvl(sum(qt-in),0),nvl(sum(qt-out),0),t_in.cd-style,t_in.dt-in from t_in , t_out
    where t_in.cd-style = t_out.cd-style(+)
      and to_date(t_in.dt-in,'yyyy-mm-dd') = decode(to_date(t_out.dt-out,'yyyy-mm-dd'),null,to_date('19000101','yyyy-mm-dd'),to_date(t_out.dt-out,'yyyy-mm-dd')) 
    group by t_in.dt-in,t_in.cd-style
      

  6.   

    select sum(qt-in),cd-sytle from t_in t,t_out t1 where t.tp-in<>'1'
    group by cd-sytle
    union all
    select sum(qt-out),cd-style from t_in t,t_out t1 where t.tp-in<>'1' 
    and t.dt-in=t1.dt-out and t.cd-style=t1.cd-style
    and t1.tp-out<>'1'
    group by cd-style;