34,593
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE T
(
ITEM VARCHAR(20),
INUM VARCHAR(20),
LOT VARCHAR(20),
QTY INT,
TOTAL INT
)
insert t select
'a','1','1',12,45 union select
'A','1','2',11,45 union select
'A','1','3',3,45 union select
'B','1','1',20,69 union select
'B','1','2',7,69 union select
'B','1','3',13,69
go
select a.*,tmp = TOTAL -(select sum( QTY ) from t where item = a.item and LOT <= a.lot )
from t a
drop table t
/*
ITEM INUM LOT QTY TOTAL tmp
-------------------- -------------------- -------------------- ----------- ----------- -----------
a 1 1 12 45 33
A 1 2 11 45 22
A 1 3 3 45 19
B 1 1 20 69 49
B 1 2 7 69 42
B 1 3 13 69 29
(所影响的行数为 6 行)
*/
--> 测试数据: @T
declare @T table (ITEM varchar(20),INUM varchar(20),LOT varchar(20),QTY int,TOTAL int)
insert into @T
select 'A',1,1,12,45 union all
select 'A',1,2,11,45 union all
select 'A',1,3,3,45 union all
select 'B',1,1,20,69 union all
select 'B',1,2,7,69 union all
select 'B',1,3,13,69
select *, R = TOTAL - (select sum(QTY) from @T where ITEM=a.ITEM and LOT<=a.LOT) from @T a
/*
ITEM INUM LOT QTY TOTAL R
-------------------- -------------------- -------------------- ----------- ----------- -----------
A 1 1 12 45 33
A 1 2 11 45 22
A 1 3 3 45 19
B 1 1 20 69 49
B 1 2 7 69 42
B 1 3 13 69 29
*/
CREATE TABLE T
(
ITEM VARCHAR(20),
INUM VARCHAR(20),
LOT VARCHAR(20),
QTY INT,
TOTAL INT
)
insert t select
'a','1','1',12,45 union select
'A','1','2',11,45 union select
'A','1','3',3,45 union select
'B','1','1',20,69 union select
'B','1','2',7,69 union select
'B','1','3',13,69
go
select a.*,tmp = (select sum(TOTAL - QTY ) from t where item = a.item and LOT <= a.lot )
from t a
drop table t
/*
ITEM INUM LOT QTY TOTAL tmp
-------------------- -------------------- -------------------- ----------- ----------- -----------
a 1 1 12 45 33
A 1 2 11 45 67
A 1 3 3 45 109
B 1 1 20 69 49
B 1 2 7 69 111
B 1 3 13 69 167
(所影响的行数为 6 行)
*/
CREATE TABLE T
(
ITEM VARCHAR(20),
INUM VARCHAR(20),
LOT VARCHAR(20),
QTY INT,
TOTAL INT
)
--
select a.*,tmp = (select(TOTAL -QTY ) from t where item = a.item and LOT <= a.lot )
from t a