怎么查询出累计值
如何查询出累计值
比如我有用户表,然后我要统计1,2,3月份的累计注册人数,肯定在时间where添加时间限制,但是能不能通过其他方式,一句SQL能直接把1月份的注册量是多少?2月份注册量是累计值,1月值+2月值 。以此类推,不知道是否能一句SQL完成。
--------------------------------------------------------------
select month(创建时间),count(*) from 用户表 group by month(创建时间)
结果
1 200
2 500
3 200
但是我想要得到的结果是
1 200
2.700 实际是(200+500)是叠加值
3 900 。。。。
这样如何做?
-------------------------------------------------------------------
如果是
select
(
select count(*) from 用户表 where 时间 as ‘一月’
select count(*) from 用户表 where 时间 as ‘二月’
....
)
这种方案不采纳,
------解决思路----------------------
------解决思路----------------------
比如我有用户表,然后我要统计1,2,3月份的累计注册人数,肯定在时间where添加时间限制,但是能不能通过其他方式,一句SQL能直接把1月份的注册量是多少?2月份注册量是累计值,1月值+2月值 。以此类推,不知道是否能一句SQL完成。
--------------------------------------------------------------
select month(创建时间),count(*) from 用户表 group by month(创建时间)
结果
1 200
2 500
3 200
但是我想要得到的结果是
1 200
2.700 实际是(200+500)是叠加值
3 900 。。。。
这样如何做?
-------------------------------------------------------------------
如果是
select
(
select count(*) from 用户表 where 时间 as ‘一月’
select count(*) from 用户表 where 时间 as ‘二月’
....
)
这种方案不采纳,
------解决思路----------------------
DECLARE @T TABLE(ID INT,Quantity INT)
INSERT INTO @T VALUES
(1,200),
(2,500),
(3,200),
(4,700)
SELECT ID,CAT.accQuantity
FROM @T T
CROSS APPLY
(
SELECT SUM(Quantity) accQuantity FROM @T WHERE ID <= T.ID
) AS CAT
------解决思路----------------------
;WITH CTE AS(
SELECT[month],COUNT(*)C FROM TB GROUP BY[month]
)
SELECT T1.[month],SUM(T2.C)C
FROM CTE T1
JOIN CTE T2 ON T1.[month]>=T2.[month]
GROUP BY T1.[month]