首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

话语简化

2013-07-16 
语句简化IF @仓库信息ID 0BEGINSELECT [ID],[编号],[名字],[别名],[单位],(SELECT SUM(商品所属仓库信息

语句简化


IF @仓库信息ID = 0
BEGIN
SELECT 
[ID]
,[编号]
,[名字]
,[别名]
,[单位]
,(SELECT SUM(商品所属仓库信息.数量) FROM 商品所属仓库信息 WHERE 商品所属仓库信息.商品信息ID = 商品信息.ID) AS 数量
,(SELECT AVG(商品所属仓库信息.单价) FROM 商品所属仓库信息 WHERE 商品所属仓库信息.商品信息ID = 商品信息.ID) AS 均价
,(SELECT SUM(商品所属仓库信息.数量 * 商品所属仓库信息.单价) FROM 商品所属仓库信息 WHERE 商品所属仓库信息.商品信息ID = 商品信息.ID) AS 库存金额 
FROM [商品信息] WHERE [分类] = @分类ID
END
ELSE 
BEGIN
SELECT 
[ID]
,[编号]
,[名字]
,[别名]
,[单位]
,(SELECT SUM(商品所属仓库信息.数量) FROM 商品所属仓库信息 WHERE 商品所属仓库信息.商品信息ID = 商品信息.ID AND 商品所属仓库信息.仓库信息ID = @仓库信息ID) AS 数量
,(SELECT AVG(商品所属仓库信息.单价) FROM 商品所属仓库信息 WHERE 商品所属仓库信息.商品信息ID = 商品信息.ID) AS 均价
,(SELECT SUM(商品所属仓库信息.数量 * 商品所属仓库信息.单价) FROM 商品所属仓库信息 WHERE 商品所属仓库信息.商品信息ID = 商品信息.ID AND 商品所属仓库信息.仓库信息ID = @仓库信息ID) AS 库存金额
FROM [商品信息] WHERE [分类] = @分类ID
END


语句简化,有没有更好的方法,查出同样的结果!
[解决办法]
SELECT   a.[ID] ,a.[编号]  ,a.[名字]  ,a.[别名] ,a.[单位]         
,SUM(b.数量) AS 数量        
 ,AVG(b.单价) AS 均价         
,SUM(b.数量 * b.单价)  AS 库存金额      
FROM [商品信息] a
LEFT JOIN 商品所属仓库信息 b on a.商品信息ID=b.商品信息ID 
and b.仓库信息ID =case when @仓库信息ID = 0 then b.仓库信息ID else @仓库信息ID end
WHERE [分类] = @分类ID 
group by a.[ID] ,a.[编号]  ,a.[名字]  ,a.[别名] ,a.[单位]         

热点排行