有3个表:分别是:【采购单】、【零售单】、【损益单】
表的字段都一样:
=====================
货号 数量
=====================【说明】:以 货号 分类合计出3张表的数量合计,并用购进-销售得到库存;SELECT 采购单.货号,采购单.数量 as 购进,零售单.数量 as 销售,损益单.数量 as 损益,采购单.数量-零售单.数量 as 库存 FROM 采购单 left join
(SELECT 零售单.货号,SUM(零售单.数量) As 数量 FROM 零售单 GROUP BY 零售单.货号) AS 零售单
ON 采购单.货号=零售单.货号
left join
SELECT 损益单.货号,SUM(损益单.数量) As 数量 FROM 损益单 GROUP BY 损益单.货号) AS 损益单 ON 采购单.货号=损益单.货号要通过SQL语句得到如下表:
==================================================================
货号 采购数量合计 销售数量合计 损益数量合计 库存
==================================================================
【问题】:这条SQL语句中有错误,两个表之间用left join连接没问题,但一加上第三个表就报错! 请高手帮忙指点!谢谢!
表的字段都一样:
=====================
货号 数量
=====================【说明】:以 货号 分类合计出3张表的数量合计,并用购进-销售得到库存;SELECT 采购单.货号,采购单.数量 as 购进,零售单.数量 as 销售,损益单.数量 as 损益,采购单.数量-零售单.数量 as 库存 FROM 采购单 left join
(SELECT 零售单.货号,SUM(零售单.数量) As 数量 FROM 零售单 GROUP BY 零售单.货号) AS 零售单
ON 采购单.货号=零售单.货号
left join
SELECT 损益单.货号,SUM(损益单.数量) As 数量 FROM 损益单 GROUP BY 损益单.货号) AS 损益单 ON 采购单.货号=损益单.货号要通过SQL语句得到如下表:
==================================================================
货号 采购数量合计 销售数量合计 损益数量合计 库存
==================================================================
【问题】:这条SQL语句中有错误,两个表之间用left join连接没问题,但一加上第三个表就报错! 请高手帮忙指点!谢谢!
解决方案 »
- 说说我对这个嵌套查询语句的理解。
- 建立一个表的一个字段引用另外个表的一个字段要怎么 建设?
- 大容量复制数据错误
- 如何获取系统当前日期上午6点至后一天上午6点之间的数据?
- ms-sql 2008触发器 问题
- 链接服务器更新数据使用事务会报"分布式事务出错"。
- VB连sqlserver,我想将数据在服务器端验证,改如何正确操作?
- SQL2000 运行的 问题?请指点
- 各位大侠,现在我有分了,请来接分
- ~~~~~~~~~~SQL横转列,马上给分!~~~~~~~~~~
- sql 语句的最大长度
- SQL语句中的update语句是否在被更新的记录不存在时,自动将该记录作为一条新记录插入。update语句有这个功能吗?
FROM 采购单
LEFT JOIN
(SELECT 零售单.货号,SUM(零售单.数量) As 数量 FROM 零售单 GROUP BY 零售单.货号) AS 零售单
ON 采购单.货号=零售单.货号
LEFT JOIN
(SELECT 损益单.货号,SUM(损益单.数量) As 数量 FROM 损益单 GROUP BY 损益单.货号) AS 损益单
ON 采购单.货号=损益单.货号
我上面的你可以试一试
我可以将一下我的思路
你将你要查询的字段放在from之前,
在where 条件之后加上你前面查询的内容所在的所以的表中。如果我的语句有问题的话
你在想一下其他的办法吧
SELECT 采购单.货号,采购单.数量 as 购进,零售单.数量 as 销售,损益单.数量 as 损益,采购单.数量-零售单.数量 as 库存
FROM 采购单 ,
(SELECT 零售单.货号,SUM(零售单.数量) As 数量 FROM 零售单 GROUP BY 零售单.货号)as 零售单 ,
(SELECT 损益单.货号,SUM(损益单.数量) As 数量 FROM 损益单 GROUP BY 损益单.货号) AS 损益单
where 采购单.货号(*)=零售单.货号 and 采购单.货号(*)=损益单.货号
select 货号,sum(采购数量合计) as 采购数量合计,sum(销售数量合计) as 销售数量合计,sum(损益数量合计) as 损益数量合计,sum(库存) as 库存
from (
select 货号,数量 as 采购数量合计,cast(0 as int) as 销售数量合计,cast(0 as int) as 损益数量合计,数量 as 库存
from 采购单
union all
select 货号,0 as 采购数量合计,数量 as 销售数量合计,cast(0 as int) as 损益数量合计,-数量 as 库存
from 零售单
union all
select 货号,0 as 采购数量合计,0 as 销售数量合计,数量 as 损益数量合计,0 as 库存
from 损益单
) as t
group by 货号
(select hx,sl as cgsl,0 xssl,0 sysl from cgd
union all
select hx,0 as cgsl,sl as xssl,0 sysl from xhd
union all
select hx,0 as cgsl,0 as xssl,sl as sysl from syd) a
group by a.hx
xhd --销售单
syd --损益单hx 采购数量 销售数量 损益数量 库存数量
-------------------------------------------------- ----------- ----------- ----------- -----------
001 10 2 5 8
002 5 1 0 4
003 5 0 5 5(所影响的行数为 3 行)