我以为我用SQL很熟了,但是我还得请教更多丰富经验的SQL高手!(oracle)
为什么SUM命令不起作用?
在做库存报表时,我需要查询货主每天进库、出库、退库的数量和品种。
进库、出库、退库三个表的基本结构相同,每个表都有不同货主每天进出不同货物的记录。
表字段如下:
JinKu:
HuoZhuID varchar2(2), --货主代码
JkDate date, --发生时间
GoodsID varchar2(4), --货物代码
Qty number(4), --数量
其余略
ChuKu:
HuoZhuID varchar2(2), --货主代码
CkDate date, --发生时间
GoodsID varchar2(4), --货物代码
Qty number(4), --数量
其余略
TuiKu:
HuoZhuID varchar2(2), --货主代码
TkDate date, --发生时间
GoodsID varchar2(4), --货物代码
Qty number(4), --数量
其余略
我在其上建了以下视图:目的是变成拥有所有进出记录的一张表
create or replace view vkcqry1 as
select HuoZhuID,JkData ddate,GoodSID,qty JkQty, 0 CkQty, 0 TkQty from JinKu
union
select HuoZhuID,CkData ddate,GoodSID, 0 JkQty, qty CkQty, 0 TkQty from ChuKu
union
select HuoZhuID,TkData ddate,GoodSID, 0 JkQty, 0 CkQty, qty TkQty from TuiKu;
作查询:
select count(*) from vkcqry1 where huozhuid='01' and to_char(ddate,'yyyymmdd')='20010915';
记录为:138
因为存在着重复记录。
如下:
HuoZHuid ddate goodsid kkqty ckqty tkqyt
01 20010920 0001 5 0 1
01 20010920 0001 1 3 1
02 20010920 0001 1 0 10
其余略
我需要将货主相同,并且货物相同,同一天发生的进出数量加起来。因此做如下视图:
create or replace view vkcqry as
select huozhuid,ddate,goodsid,sum(jkqty) jkqty,sum(ckqty) ckqty,sum(tkqty) tkqty
from vkcqry1 group by huozhuid,ddate,goodsid;
然后查询:
select COUNT(*) from vkcqry where huozhuid='01' and to_char(ddate,'yyyymmdd')='20010915';
记录依然为:138 好象求和没有作用!
我很困惑,我的SQL应该没有问题呀?
问题到底出在哪里了?或者要实现我的效果,SQL还可以怎样写?