SQL语言高手请进!

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:42:07
SQL语言高手请进!
看下面这张表
库存:
_________________________
商品名称--仓库--数量--金额
-------------------------
电视机--1号仓库--10--2000
电视机--2号仓库--10--2000
洗衣机--1号仓库--0--0
洗衣机--2号仓库--0--0
_________________________

查询总库存--包括 数量,和成本均价[(Sum金额)/Sum(数量)]

实现下面总库存查询时出现问题(0不能做除数)!
SELECT 商品名称,Sum(数量) AS 库存总数 ,(Sum金额)/Sum(数量) AS 成本均价 FROM 库存 GROUP BY 商品名称
___________________________
商品名称--库存总数--成本均价
---------------------------
电视机---20---------2000
洗衣机---0----------# 错误
--------------------------
如何消除0不能做除数的问题?(数据库ACCESS)
要兼容ACCESS数据库

SELECT 商品名称,Sum(数量) AS 库存总数 ,成本均价=case sum(数量) when 0 then 0 else (Sum金额)/Sum(数量) end FROM 库存 GROUP BY 商品名称

SELECT 商品名称,Sum(数量) AS 库存总数 ,(Sum金额)/Sum(数量) AS 成本均价 FROM 库存 where 数量>0 GROUP BY 商品名称

经测试access,sqlserver通过:
SELECT 商品名称,Sum(数量) AS 库存总数 ,Sum(金额)/Sum(数量) AS 成本均价 FROM 库存 GROUP BY 商品名称 having Sum(数量)>0
union
SELECT 商品名称,Sum(数量) AS 库存总数 ,Sum(金额)/1 AS 成本均价 FROM 库存 GROUP BY 商品名称 having Sum(数量)=0

额。。来晚了。。。
case做视图不错,但假如你那要拿case出来的字段做运算就不行了
where 数量>0 的确可以避免,但这样不知道会不会对你的需求有影响
union 很不错,但access 能用吗?我忘了。印象中access很多高级点的函数都不能用的

个人喜欢用case,假如不影响需求还是where好
union 我只会万不得以才用。。总感觉比较费资源
~~~纯熟个人意见