年內(nèi)按月累計(如:2月累計為前兩個月的,3月累計為前三個月的)
CREATE?TABLE?T?(tDate?DATETIME,tValue?INT) INSERT?INTO?dbo.T SELECT?'2017-01-08',10?UNION SELECT?'2017-01-25',20?UNION SELECT?'2017-02-11',30?UNION SELECT?'2017-02-28',40?UNION SELECT?'2017-03-17',50?UNION SELECT?'2017-04-03',60?UNION SELECT?'2017-04-20',70?UNION SELECT?'2017-05-07',80?UNION SELECT?'2017-05-24',90 SELECT?*?FROM?dbo.T; SELECT?MONTH(tDate)?AS?月份, (SELECT?SUM(tValue)?FROM?dbo.T?T1??WHERE?MONTH(T1.tDate)<=MONTH(T.tDate))?累計? FROM?dbo.T? GROUP?BY?MONTH(tDate)
tDate???????????????????tValue -----------------------?----------- 2017-01-08?00:00:00.000?10 2017-01-25?00:00:00.000?20 2017-02-11?00:00:00.000?30 2017-02-28?00:00:00.000?40 2017-03-17?00:00:00.000?50 2017-04-03?00:00:00.000?60 2017-04-20?00:00:00.000?70 2017-05-07?00:00:00.000?80 2017-05-24?00:00:00.000?90 (9?行受影響) 月份??????????累計 -----------?----------- 1???????????30 2???????????100 3???????????150 4???????????280 5???????????450 (5?行受影響)
求x個月內(nèi)產(chǎn)品逐月庫存
if?object_id('[huang]')?is?not?null?drop?table?[huang] go? create?table?[huang]([年]?int,[月]?int,[產(chǎn)品]?varchar(1),[未出庫數(shù)量]?int) insert?[huang] select?2013,11,'A',100?union?all select?2014,1,'A',300?union?all select?2013,10,'B',1000?union?all select?2013,11,'B',1500?union?all select?2013,12,'B',3001 --------------開始查詢-------------------------- ;WITH?d?AS? ( ?SELECT?CONVERT(VARCHAR(10),DATEADD(mm,number,'2013-11-01'),120)[date],b.產(chǎn)品 ?FROM?master..spt_values?cross?JOIN?(SELECT?DISTINCT?產(chǎn)品?FROM?[huang])?b ?WHERE?[type]='p'?AND?number>0?AND?numberb.id?AND?a.[產(chǎn)品]=b.[產(chǎn)品]),0)[未出庫數(shù)量] ??FROM?cte?a? ?ORDER?BY?[產(chǎn)品],[年],a.月 ? ?/* ?年???????????月???????????產(chǎn)品???未出庫數(shù)量 -----------?-----------?----?----------- 2013????????11??????????A????0 2013????????12??????????A????100 2014????????1???????????A????100 2014????????2???????????A????400 2014????????3???????????A????400 2014????????4???????????A????400 2014????????5???????????A????400 2013????????10??????????B????0 2013????????11??????????B????1000 2013????????12??????????B????2500 2014????????1???????????B????5501 2014????????2???????????B????5501 2014????????3???????????B????5501 2014????????4???????????B????5501 2014????????5???????????B????5501 ?*/