Office中国论坛/Access中国论坛
标题: 如何实现此查询 [打印本页]
作者: iorihong 时间: 2006-10-10 20:00
标题: 如何实现此查询
此表中有入库,出库商品表(其中有期初数量)
要实现的结果是,
如A商品 期初数量 日期 入库数量 出库数量 库存
10 9-6 50 20 40
40 9-10 30 0 70
70 9-11 0 10 60
这样的结果查询,B商品也如此?先谢谢拉
[attach]20804[/attach]
[此贴子已经被作者于2006-10-10 16:30:29编辑过]
作者: hi-wzj 时间: 2006-10-10 21:57
我的专栏中有例子可以下载
作者: wwwwa 时间: 2006-10-10 23:47
1、将表中有关数量的字段改为数字型,日期字段改为日期型(RQ);
2、TRY:
SELECT sp, rq1, qcs1+期初数 AS qcs, rk, ck, jc+期初数 AS kcs
FROM (SELECT *,(select sum(rk-ck) from
(SELECT sp, rq1, rk, ck
FROM (SELECT IIF(ISNULL(A.商品),B.商品,A.商品) AS SP,IIF(ISNULL(A.RQ),B.RQ,A.RQ) AS RQ1,
IIF(ISNULL(出库数量),0,出库数量) AS CK,IIF(ISNULL(入库数量),0,入库数量) AS RK,
* FROM (
SELECT *
FROM 出库 A LEFT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ
UNION
SELECT *
FROM 出库 A RIGHT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ)
ORDER BY 1,A.RQ,B.RQ)
) AS BG
where Ya.sp=BG.sp and Ya.RQ1>=BG.RQ1) as jc,
nz((select sum(rk-ck) from
(SELECT sp, rq1, rk, ck
FROM (SELECT IIF(ISNULL(A.商品),B.商品,A.商品) AS SP,IIF(ISNULL(A.RQ),B.RQ,A.RQ) AS RQ1,
IIF(ISNULL(出库数量),0,出库数量) AS CK,IIF(ISNULL(入库数量),0,入库数量) AS RK,
* FROM (
SELECT *
FROM 出库 A LEFT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ
UNION
SELECT *
FROM 出库 A RIGHT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ)
ORDER BY 1,A.RQ,B.RQ)
)
where Ya.sp=sp and Ya.RQ1>RQ1),0) as qcs1 from
(SELECT sp, rq1, rk, ck
FROM (SELECT IIF(ISNULL(A.商品),B.商品,A.商品) AS SP,IIF(ISNULL(A.RQ),B.RQ,A.RQ) AS RQ1,
IIF(ISNULL(出库数量),0,出库数量) AS CK,IIF(ISNULL(入库数量),0,入库数量) AS RK,
* FROM (
SELECT *
FROM 出库 A LEFT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ
UNION
SELECT *
FROM 出库 A RIGHT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ)
ORDER BY 1,A.RQ,B.RQ)
)
Ya) AS b LEFT JOIN 商品表 AS A ON a.商品=b.sp
ORDER BY SP,RQ1
[此贴子已经被作者于2006-10-10 16:17:05编辑过]
作者: wwwwa 时间: 2006-10-10 23:51
将第一个查询的[改为(,]改为),首先将入库、出库记录连接,再进行计算,也可以用生成临时表的方法,SQL语句可以短一些。
[此贴子已经被作者于2006-10-10 16:24:26编辑过]
作者: iorihong 时间: 2006-10-11 00:29
首先感谢两位高手,
hi-wzj版主,能否把您的例子的连接贴一下呢?感谢拉
wwwwa高手,您的sql代码我看不太懂,就是一个查询,还是分几个的,能否改一下,就用我的例子?感谢拉,例子已重新上传了
[此贴子已经被作者于2006-10-10 16:31:38编辑过]
作者: wwwwa 时间: 2006-10-11 00:31
以下是引用iorihong在2006-10-10 16:29:00的发言:
wwwwa高手,您的sql代码我看不太懂,就是一个查询,还是分几个的,能否改一下,就用我的例子?感谢拉
一个查询,就是用你的数据。
作者: wwwwa 时间: 2006-10-11 00:33
自己慢慢理解吧,可以将
SELECT sp, rq1, rk, ck
FROM (SELECT IIF(ISNULL(A.商品),B.商品,A.商品) AS SP,IIF(ISNULL(A.RQ),B.RQ,A.RQ) AS RQ1,
IIF(ISNULL(出库数量),0,出库数量) AS CK,IIF(ISNULL(入库数量),0,入库数量) AS RK,
* FROM (
SELECT *
FROM 出库 A LEFT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ
UNION
SELECT *
FROM 出库 A RIGHT JOIN 入库 B ON A.商品=B.商品 AND A.RQ=B.RQ)
ORDER BY 1,A.RQ,B.RQ)
生成临时表。
作者: wwwwa 时间: 2006-10-11 00:43
比如临时表为FF
SELECT sp, rq1, qcs1+期初数 AS qcs, rk, ck, jc+期初数 AS kcs
FROM (SELECT *,(select sum(rk-ck) from ff where a.sp=sp and a.RQ1>=RQ1) as jc,
nz((select sum(rk-ck) from ff where a.sp=sp and a.RQ1>RQ1),0) as qcs1 from ff a) AS b LEFT JOIN 商品表 AS A ON a.商品=b.sp;
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) |
Powered by Discuz! X3.3 |