用一条SQL完成数据表的行统计

发表于:2007-07-02来源:作者:点击数: 标签:
作者的一个软件项目的查询系统 需求 : 有数据表:名称 数量 状态 ----------------------- 产品A 10 进货 产品A 20 销售 产品B 20 进货要查询结果为:产品名称 库存数量 ----------------------- 产品A -10 产品B 20解决方法一: SELECT DISTINCT 名称, (ISNULL(
作者的一个软件项目的查询系统需求:
有数据表:名称    数量   状态
-----------------------
产品A    10     进货
产品A    20     销售
产品B    20     进货 要查询结果为:产品名称   库存数量
-----------------------
产品A        -10 
产品B         20解决方法一:
SELECT
DISTINCT 名称,
(ISNULL((select SUM(A.数量) from 库存表 A WHERE A.名称 = 库存表.名称 AND A.状态=@#进货@#), 0)
-
ISNULL((select SUM(A.数量) from 库存表 A WHERE A.名称 = 库存表.名称  AND A.状态=@#销售@#), 0)) AS 库存数量
FROM
库存表

解决方法二(Aclearcase/" target="_blank" >ccess):
SELECT 名称,Sum(IIF(状态=@#进货@#,1,-1) * 数量) as  库存数量 From 库存表 Group By 名称

解决方法三(Access):
SELECT 名称,Sum(IIF(状态=@#进货@#,数量,0)-IIF(状态=@#销货@#,数量,0)) as  库存数量 From 库存表 Group By 名称


原文转自:http://www.ltesting.net