当前位置: 代码迷 >> Sql Server >> 一个SQL语句的处理过程与思路,该怎么处理
  详细解决方案

一个SQL语句的处理过程与思路,该怎么处理

热度:88   发布时间:2016-04-24 09:41:45.0
一个SQL语句的处理过程与思路
ID     Color          Size  InQty  OutQty
1 123 红色 X 20    10
2 123 黑色 X 20    12
3 123 红色 X 20    14
4 123 黑色 X 20    15
5 123 红色 X 20     2
6 123 黑色 X 20     8
7 123 红色 X 20     22
8 123 红色 X 20    19

如上表,想要的结果是,从第一行开始,InQty-OutQty  然后加上第二行的InQty - 第二行的OutQty

一直这样运算下去,加多一列显示每一行的计算结果

请问SQL语句如何写?思路是怎样的。

------解决思路----------------------

CREATE TABLE #temp (ID int,Color int,[SIZE] VARCHAR(50),InQty INT,OutQty INT)

INSERT #temp
SELECT 1,123,'红色 X 20',10,0 UNION ALL
SELECT 2,123,'黑色 X 20',12,0 UNION ALL
SELECT 3,123,'红色 X 20',14,0 UNION ALL
SELECT 4,123,'黑色 X 20',15,0 UNION ALL
SELECT 5,123,'红色 X 20',2,0 UNION ALL
SELECT 6,123,'黑色 X 20',8,0 UNION ALL
SELECT 7,123,'红色 X 20',22,0 UNION ALL
SELECT 8,123,'红色 X 20',19,0

SELECT a.*,(SELECT SUM(inqty-outqty) FROM #temp WHERE id<=a.id) endqty
FROM #temp a

------解决思路----------------------

drop table #temp
CREATE TABLE #temp (ID int,Color int,[SIZE] VARCHAR(20),InQty INT,OutQty INT)
 
INSERT #temp
SELECT 1,123,'红色 X 20',10,0 UNION ALL
SELECT 2,123,'黑色 X 20',12,0 UNION ALL
SELECT 3,123,'红色 X 20',14,0 UNION ALL
SELECT 4,123,'黑色 X 20',15,0 UNION ALL
SELECT 5,123,'红色 X 20',2,0 UNION ALL
SELECT 6,123,'黑色 X 20',8,0 UNION ALL
SELECT 7,123,'红色 X 20',22,0 UNION ALL
SELECT 8,123,'红色 X 20',19,0

go
-- 上个回复加错列了,换成这个。
with m as
(
select a.* , a.InQty as sumQty from #temp a where ID = 1 
union all
select a.* , a.InQty + m.sumQty from m , #temp a where a.ID = m.ID + 1 
)
select * from m


(8 行受影响)
ID          Color       SIZE                 InQty       OutQty      sumQty
----------- ----------- -------------------- ----------- ----------- -----------
1           123         红色 X 20              10          0           10
2           123         黑色 X 20              12          0           22
3           123         红色 X 20              14          0           36
4           123         黑色 X 20              15          0           51
5           123         红色 X 20              2           0           53
6           123         黑色 X 20              8           0           61
7           123         红色 X 20              22          0           83
8           123         红色 X 20              19          0           102
  相关解决方案