gpt4 book ai didi

sql - 与前几个月建立表格(累计)

转载 作者:行者123 更新时间:2023-12-02 00:12:45 28 4
gpt4 key购买 nike

我对以下需要使用 SQL 查询而不是 plsql 来解决的问题感到困惑。这个想法是建立一个累积列来计算之前的所有月份。输入表看起来像

 Month
1
2
3
..
24

我需要建立下表:

Month Cum_Month
1 1
2 1
2 2
3 1
3 2
3 3
..
24 1
...
24 23

所有这些都在 SQL Server 2008 中,提前致谢

最佳答案

你可以这样做:

DECLARE @tbl TABLE ([Month] INT)
INSERT @tbl VALUES
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),(21),(22),(23),(24)


SELECT Month
, ROW_NUMBER() OVER (PARTITION BY Month ORDER BY Month) num
FROM @tbl a
JOIN
(
SELECT *
FROM master..spt_values
WHERE type = 'P'
)
b ON b.number < a.Month

master..spt_values用于生成数字,生成数字后将子查询的结果加入到@tbl上得到对应的行数月份。之后,ROW_NUMBER 用于为每个月创建适当的序号。

关于sql - 与前几个月建立表格(累计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14620948/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com