读书人

这个查询怎么提高效率

发布时间: 2013-01-08 14:02:14 作者: rapoo

这个查询如何提高效率
本帖最后由 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 编号


我想知道你这个是干嘛的?substring(a.编号,1,10)= b.编号
[解决办法]
不是很懂你要啥
--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 行受影响)

*/

读书人网 >SQL Server

热点推荐