这个查询如何提高效率
本帖最后由 jzkaixin 于 2012-12-07 17:19:55 编辑 SELECT 编号,
(SELECT SUM(数量) From [数据表] a Where substring(a.编号,1,10)= b.编号) As [数量]
From 数据表 b WHERE类别=0
一个表 表内数据如下
编号 数量 类别
WD001 100 0
WD001-1 20 1
WD001-2 80 1
我现在想循环所有类别等于0的数据
然后 提取 编号 统计 这个编号下的所有数量的和
上面 substring 结果已经出来了 但是效率特别低 很慢 有没有别的方法可以快点
[解决办法]
SELECT 编号,SUM(数量) As [数量]
From 数据表
WHERE 类别=0
group by 编号
--CREATE TABLE huang(编号 VARCHAR(10), 数量 INT, 类别 INT )
--INSERT INTO huang
--SELECT 'WD001', 100 , 0
--UNION ALL
--SELECT 'WD001-1' , 20 , 1
--UNION ALL
--SELECT 'WD001-2' ,80 , 1
SELECT SUM(数量) 数量差 ,
编号
FROM ( SELECT SUM(数量) 数量 ,
SUBSTRING(编号, 1, 5) 编号
FROM Huang
WHERE 类别 = 1
GROUP BY SUBSTRING(编号, 1, 5)
UNION ALL
SELECT -1 * 数量 ,
编号
FROM Huang
WHERE 类别 = 0
) a
GROUP BY 编号
/*
数量差 编号
----------- ----------
0 WD001
(1 行受影响)
*/