SQL将年记录拆分为12个月记录



我试图使用公共表表达式将年度记录拆分为12个月记录。我必须为未来20年的唱片做这件事。这意味着将20行放入600行(20*12=600条记录)。做这件事的最好方法是什么?谁能提供一个有效的方法来做这件事?使用如下所示的单个表。第0年是指当年,所以它应该分成剩余的月份,而Year =1意味着下一年以后它应该分成12个(月)记录

id  year value
1   0   3155174.87
1   1   30423037.3
1   2   35339631.25

预期结果应该是这样的:

Id Year Month Value日历年1 0 5 150 20221 0 6 150 20221 0 7 150 202210 8 150 20221 0 9 150 202210 10 150 202210 11 150 202210 12 150 20221 0 1 150 20231 02 150 202310 3 150 20231 0 4 150 20231 1 5 100 20231 1 6 100 20231 1 7 100 20231 1 8 100 20231 1 100 20231 1 10 100 2023111110020231 1 12 100 20231 1 100 20241 1 2 100 20241 1 3 100 20241 1 4 100 2024

您可以简单地连接到月份列表,然后使用一点算术来拆分Value

SELECT
t.Id,
t.Year,
v.Month,
Value = t.Value / CASE WHEN t.Year = 0 THEN 13 - MONTH(GETDATE()) ELSE 12 END
FROM YourTable t
JOIN (VALUES
(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)
) v(Month) ON t.year > 0 OR v.Month >= MONTH(GETDATE());

,db&lt的在小提琴

相关内容

  • 没有找到相关文章

最新更新