| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1056 人关注过本帖
标题:高手进来看看这个查询语句应该怎么写呀
只看楼主 加入收藏
robinbest
Rank: 1
等 级:新手上路
威 望:2
帖 子:213
专家分:0
注 册:2007-9-13
结帖率:0
收藏
 问题点数:0 回复次数:4 
高手进来看看这个查询语句应该怎么写呀
各位SQL高手:
帮我看看要实现这个查义功能应该怎么写语句:
如附件图所描述:

SELECT.JPG (35.69 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 语句 SQL 查询 附件 
2008-04-21 19:47
zougonghua
Rank: 1
等 级:新手上路
帖 子:163
专家分:0
注 册:2008-4-1
收藏
得分:0 
1.根据你给的最后格式:调整了两条数据,否则结存存在负数
2.觉得"入库 "和"出货"两张表可以合并成一张表"异动"表
3.返回的结果请看附件,同一天的数据没有"合并"成一条显示,此工作交给你处理

Create Table 入库表(料号 Varchar(10),日期 datetime,数量 int)
Create Table 出货表(料号 Varchar(10),日期 datetime,数量 int)

INSERT INTO 入库表 Values('A001','2008-04-01',50)
INSERT INTO 入库表 Values('A002','2008-04-03',80)
--INSERT INTO 入库表 Values('A001','2008-04-07',50)
INSERT INTO 入库表 Values('A001','2008-04-04',50)
--INSERT INTO 入库表 Values('A002','2008-04-08',80)
INSERT INTO 入库表 Values('A002','2008-04-04',80)


INSERT INTO 出货表 Values('A002','2008-04-03',60)
INSERT INTO 出货表 Values('A001','2008-04-05',60)
INSERT INTO 出货表 Values('A001','2008-04-06',40)
INSERT INTO 出货表 Values('A002','2008-04-05',80)

SELECT * FROM 入库表 ORDER BY 料号,日期
SELECT * FROM 出货表 ORDER BY 料号,日期

SELECT * INTO #库存异动表 FROM(
SELECT *,'入库' AS 交易类型  FROM 入库表
UNION
SELECT *,'出货' AS 交易类型  FROM 出货表) a


SELECT * FROM #库存异动表

SELECT 料号,日期,Case WHEN  交易类型='入库' THEN 数量 ELSE 0 END AS 入库数,
                Case WHEN  交易类型='出货' THEN 数量 ELSE 0 END AS 出货数,
(SELECT SUM(Case WHEN  交易类型='入库' THEN 数量 ELSE 0 END) -
SUM(Case WHEN  交易类型='出货' THEN 数量 ELSE 0 END ) FROM #库存异动表 a
WHERE a.料号=#库存异动表.料号 AND a.日期 <=#库存异动表.日期) AS 结存数
FROM #库存异动表

DROP Table 入库表
DROP Table 出货表
DROP Table #库存异动表

1.JPG (24.33 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
2008-04-24 12:42
robinbest
Rank: 1
等 级:新手上路
威 望:2
帖 子:213
专家分:0
注 册:2007-9-13
收藏
得分:0 
[bo]以下是引用 [un]zougonghua[/un] 在 2008-4-24 12:42 的发言:[/bo]

1.根据你给的最后格式:调整了两条数据,否则结存存在负数
2.觉得"入库 "和"出货"两张表可以合并成一张表"异动"表
3.返回的结果请看附件,同一天的数据没有"合并"成一条显示,此工作交给你处理

Create Table 入库表(料 ...


非常感谢zougonghua,这样的结果我已经很满足了!
2008-04-24 17:47
lff642
Rank: 1
等 级:新手上路
帖 子:91
专家分:0
注 册:2007-11-28
收藏
得分:0 
t很强!
2008-04-25 15:48
zougonghua
Rank: 1
等 级:新手上路
帖 子:163
专家分:0
注 册:2008-4-1
收藏
得分:0 
合并显示其实很简单:
SELECT 料号,日期,SUM(入库数) AS 入库数, SUM(出货数),结存数
FROM (
SELECT 料号,日期,Case WHEN  交易类型='入库' THEN 数量 ELSE 0 END AS 入库数,
                Case WHEN  交易类型='出货' THEN 数量 ELSE 0 END AS 出货数,
(SELECT SUM(Case WHEN  交易类型='入库' THEN 数量 ELSE 0 END) -
SUM(Case WHEN  交易类型='出货' THEN 数量 ELSE 0 END ) FROM #库存异动表 a
WHERE a.料号=#库存异动表.料号 AND a.日期 <=#库存异动表.日期) AS 结存数
FROM #库存异动表) 库存异动表
GROUP BY 料号,日期,结存数
2008-04-25 17:29
快速回复:高手进来看看这个查询语句应该怎么写呀
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.048682 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved