回复 7楼 mywisdom88
select t1.商品代码,nvl(t0.进库,0)-t1.出库 as 库存,t2.商品名称 from (select 商品代码,sum(数量) as 出库 from 出库数据表 group by 商品代码)t1 ;
left join (select 商品代码,sum(数量) as 进库 from 进库数据表 group by 商品代码)t0 on t0.商品代码=t1.商品代码 ;
left join (select 商品代码,商品名称 from 商品表)t2 on t2.商品代码=t1.商品代码
读了一遍,我的理解如下:
最终结果查询语句 "select t1.商品代码,nvl(t0.进库,0)-t1.出库 as 库存,t2.商品名称"为三个字段,其中 库存字段,来源于T0表和TI表汇总数量之差;
商品代码字段来源于T1表;商品名称字段来源于T2表。
t0表来源是查询语句"(select 商品代码,sum(数量) as 进库 from 进库数据表 group by 商品代码)t0"
t1表来源是查询语句"(select 商品代码,sum(数量) as 出库 from 出库数据表 group by 商品代码)t1"
t2表来源是查询语句"(select 商品代码,商品名称 from 商品表)t2
t1表和t0表为左连接,连接关键字是"商品代码"
t1表和t2表也是左连接,连接关键字是"商品代码",连接的目的是为了显示字段"商品名称"
t0表和t1表的汇总关键字为"商品代码"(分组)
不过我查了一下帮助文件,没有看到这种写法"(select 商品代码,sum(数量) as 出库 from 出库数据表 group by 商品代码)t1 "即在完整的查询语句的括号后写上表名。指定查询结果的语句我理解是这样的:
"select 进库数据表.商品代码,sum(进库数据表.数量) as 进库
from:C:\进库数据表;
group by 商品代码;
INTO CURSOR t1"
又,我理解你写的这个查询语句应该是属于嵌套查询,按我能查到的资料来理解,每一个查询都应该是完整的。不知道是不是我理解错了,还是你写的语句有所省略?
再次谢谢!
[此贴子已经被作者于2021-9-5 18:09编辑过]