日期:2014-05-18 浏览次数:20773 次
select *, isnull((select top 1 数量 from tb where 日期<t.日期 order by 日期 desc)-数量,数量) as 余量 from tb t
------解决方案--------------------
--日期 数量 "余量(昨天数量-今天数量)"
--2011-1-2 20 70
--2011-1-1 10 90
--2010-12-30 100 100
if OBJECT_ID('tb')  is not null
drop table tb
go
create table tb(日期 varchar(50) , 数量 int,  余量 int )
insert into tb values('2011-1-2' ,20 ,70 ),('2011-1-1' ,10, 90 ),('2010-12-30', 100 ,100) 
--请问这个表中的余量怎么用SQL写呢
--如:2011-1-1的余量等于2010-12-30的数量减去2011-1-1的数量。
select *, isnull((select   top 1  数量 from tb where t.日期>日期 )-数量, 数量)as 余量 from tb t 
 
(3 行受影响)
日期                                                 数量          余量          余量
-------------------------------------------------- ----------- ----------- -----------
2011-1-2                                           20          70          -10
2011-1-1                                           10          90          90
2010-12-30                                         100         100         100
(3 行受影响)
------解决方案--------------------
select *,
 isnull((select top 1 余量 from tb where 日期<t.日期 order by 日期 desc)-数量,余量) as 余量
from tb t
------解决方案--------------------
if OBJECT_ID('tb')  is not null
drop table tb
go
create table tb(日期 varchar(50) , 数量 int,  余量 int )
insert into tb values('2011-1-2' ,20 ,70 ),('2011-1-1' ,10, 90 ),('2010-12-30', 100 ,100) 
select *, isnull((select   top 1  余量 from tb where t.日期>日期 order by 日期 desc )-数量, 数量)as 余量 from tb t 
日期                                                 数量          余量          余量
-------------------------------------------------- ----------- ----------- -----------
2011-1-2                                           20          70          70
2011-1-1                                           10          90          90
2010-12-30                                         100         100         100
(3 行受影响)
------解决方案--------------------
if OBJECT_ID('tb')  is not null
drop table tb
go
create table tb(日期 varchar(50) , 数量 int,  余量 int )
insert into tb values('2011-1-2' ,20 ,70 ),('2011-1-1' ,10, 90 ),('2010-12-30', 100 ,100) 
select *, isnull((select   top 1  余量 from tb where t.日期>日期 order by 日期 desc )-数量, 数量)as 余量 from tb t 
日期                                                 数量          余量          余量
-------------------------------------------------- ----------- ----------- -----------
2011-1-2                                           20          70          70
2011-1-1                                           10          90          90
2010-12-30                                         100         100         100
(3 行受影响)