34,594
社区成员
发帖
与我相关
我的任务
分享
--> 测试数据: [tb]
if object_id('[tb]') is not null drop table [tb]
create table [tb] (theDate varchar(10),totalPrice int)
insert into [tb]
select '2011-9-23',1 union all
select '2011-9-23',2 union all
select '2011-9-23',22 union all
select '2011-9-22',32 union all
select '2011-9-22',2 union all
select '2011-9-21',9
--开始查询
select theDate,
totalPrice=(select sum(totalPrice) from [tb] where theDate<=a.theDate)
from [tb] a
group by theDate
order by 1 desc
--结束查询
drop table [tb]
/*
theDate totalPrice
---------- -----------
2011-9-23 68
2011-9-22 43
2011-9-21 9
(3 行受影响)
create table tb
(
theDate datetime,
totalPrice int
)
insert into tb values('2011-9-23',1)
insert into tb values('2011-9-23',2)
insert into tb values('2011-9-23',22)
insert into tb values('2011-9-22',32)
insert into tb values('2011-9-22',2)
insert into tb values('2011-9-21',9)
with cte as
(
select row_number() over (order by thedate) num,* from tb
)
,cte2 as
(
select thedate ,totalprice = (select sum(totalprice) from cte where num <= t.num)
from cte t
)
select convert(varchar(10),theDate,120)thedate,max(totalprice) totalprice from cte2
group by convert(varchar(10),theDate,120)
order by thedate desc
/*
thedate totalprice
---------- -----------
2011-09-23 68
2011-09-22 43
2011-09-21 9
(3 行受影响)
[Quote=引用 6 楼 marklr 的回复:]select
convert(varchar(10),theDate,120) as theDate,sum(totalPrice) as totalPrice
from
tb
where
datediff(mm,theDate,getdate())=0
group by
convert(varchar(10),theDate,120)
select convert(varchar(10),theDate,120) theDate,sum(totalPrice) totalPrice
from tb where datediff(month,theDate,getdate())=0
group by convert(varchar(10),theDate,120)