设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 1223|回复: 7
打印 上一主题 下一主题

[查询] 如何实现此查询

[复制链接]
跳转到指定楼层
1#
发表于 2006-10-10 20:00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式






此表中有入库,出库商品表(其中有期初数量)

要实现的结果是,

如A商品   期初数量   日期  入库数量    出库数量   库存

                10            9-6     50                 20         40

                40            9-10   30               0             70

               70             9-11    0               10             60

这样的结果查询,B商品也如此?先谢谢拉  



[此贴子已经被作者于2006-10-10 16:30:29编辑过]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2006-10-10 21:57:00 | 只看该作者
我的专栏中有例子可以下载

3#
发表于 2006-10-10 23:47:00 | 只看该作者
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编辑过]

4#
发表于 2006-10-10 23:51:00 | 只看该作者
将第一个查询的[改为(,]改为),首先将入库、出库记录连接,再进行计算,也可以用生成临时表的方法,SQL语句可以短一些。

[此贴子已经被作者于2006-10-10 16:24:26编辑过]

5#
 楼主| 发表于 2006-10-11 00:29:00 | 只看该作者
首先感谢两位高手,

hi-wzj版主,能否把您的例子的连接贴一下呢?感谢拉

wwwwa高手,您的sql代码我看不太懂,就是一个查询,还是分几个的,能否改一下,就用我的例子?感谢拉,例子已重新上传了

[此贴子已经被作者于2006-10-10 16:31:38编辑过]

6#
发表于 2006-10-11 00:31:00 | 只看该作者
以下是引用iorihong在2006-10-10 16:29:00的发言:


wwwwa高手,您的sql代码我看不太懂,就是一个查询,还是分几个的,能否改一下,就用我的例子?感谢拉

 一个查询,就是用你的数据。
7#
发表于 2006-10-11 00:33:00 | 只看该作者
自己慢慢理解吧,可以将

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)
生成临时表。
8#
发表于 2006-10-11 00:43:00 | 只看该作者
比如临时表为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;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-26 03:49 , Processed in 0.103191 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表