Foxtable(狐表)用户栏目专家坐堂 → [求助]关于SQL用于跨表统计生成临时表展示库存的求助


  共有2542人关注过本帖树形打印复制链接

主题:[求助]关于SQL用于跨表统计生成临时表展示库存的求助

帅哥哟,离线,有人找我吗?
舟舟
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:982 威望:0 精华:0 注册:2016/1/30 14:12:00
[求助]关于SQL用于跨表统计生成临时表展示库存的求助  发帖心情 Post By:2016/4/6 16:25:00 [只看该作者]

外部表。共有三个表,分别是{货物档案}(类别编号,初始库存);{入库明细}(类别编号,入库数量);{出库明细}(类别编号,出库数量)。
其中货物档案中的类别编号是唯一的,入库明细和出库明细中同一个类别编号可能有多次出入库,对应多条记录。
现在的要求是需要使用SQL语句,生成一个临时表,含有,类别编号,入库总量,出库总量三列。
使用的是左连接:
以下内容为程序代码:

1 Select 类别编号,初始库存,sum({入库明细}.[入库数量]) As [入库总量],sum({出库明细}.[出库数量]) As [出库总量] F rom ({货物档案} Left JOIN {入库明细} ON {入库明细}.[类别编号] = {货物档案}.[类别编号]) Left JOIN {出库明细} ON {出库明细}.[类别编号] = {货物档案}.[类别编号] Group By 类别编号,初始库存


但是,生成的表不对,SUM多算了三次。

我的目的实际上就是,定义一个临时表,使用COMMAND从后台取数据。这个临时表要从后台的三个表中提取数据,其中入库明细和出库明细需要计算SUM,再填入临时表中。这个临时表主要是想用于展示每种装备的出入库情况及当前库存。
如果 我这种方法不行,还有其它 方法推荐吗?
(另外,上面代码中f rom 中间有个空格,要不然老是说我没有权限,提交参数错误?)

 回到顶部
帅哥哟,离线,有人找我吗?
大红袍
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/4/6 16:34:00 [只看该作者]

思路有问题。应该这样写sql语句。

 

1、

Select 类别编号, 入库数量 as 入库数量, 0 as 出库数量 fr om {入库明细}

un ion all Select 类别编号, 0, 出库数量 fr om {出库明细}

 

2、把1分组统计

 

Select 类别编号, sum(入库数量) as 入库总量,  sum(出库数量) as 出库总量 fr om (1的语句) group by 类别编号

 

3、如果还要加上初始库存,就这样写

 

Select 类别编号, 初始库存, 入库总量, 出库总量 fr om (2的语句) as a inner join {货物档案} as b on a.类别编号 = b.类别编号

 

 

[此贴子已经被作者于2016/4/7 15:13:35编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
舟舟
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:125 积分:982 威望:0 精华:0 注册:2016/1/30 14:12:00
回复:(大红袍)思路有问题。应该这样写sql语句。&...  发帖心情 Post By:2016/4/7 15:11:00 [只看该作者]

谢谢红袍老师,你的思路非常清晰!
我学习了你的思路,又看了说明书,对u nion 和j oin 等又有了深入的了解。
按照你的思路,我重写了S QL代码如下,经测试,完全正确!

以下内容为程序代码:

1 s elect a.类别编号,初始库存,入库总量,出库总量 f rom {货物档案} a left join (select [装备信息_类别编号],sum(入库数量) as 入库总量,sum(出库数量) as 出库总量 f rom (s elect [装备信息_类别编号],[装备信息_数量] as 入库数量,0 as 出库数量 f rom {入库明细} u nion all select [装备信息_类别编号],0 as 入库数量,[装备信息_数量] as 出库数量 f rom {出库明细}) group by [装备信息_类别编号]) b on a.类别编号 = b.装备信息_类别编号



再次表示感谢!

 回到顶部