首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >YTD预算表到SQL中的当前期间

YTD预算表到SQL中的当前期间
EN

Stack Overflow用户
提问于 2013-04-09 17:10:01
回答 1查看 613关注 0票数 0

我有一个以下格式的表格(伪代码):

代码语言:javascript
复制
CREATE TABLE [GLM_MASTER__BUDGET](
    [Budget_Year],
    [Budget_Type],
    [Account],
    [Period_1_Budget],
    [Period_2_Budget],
    [Period_3_Budget],
    [Period_4_Budget],
    [Period_5_Budget],
    [Period_6_Budget],
    [Period_7_Budget],
    [Period_8_Budget],
    [Period_9_Budget],
    [Period_10_Budget],
    [Period_11_Budget],
    [Period_12_Budget]
    )

我需要能够用当前期间的int的with来查询它,比如6

这应该返回从1到指定数字的所有周期的组合值。

所以我最终会得到这样的输出:

代码语言:javascript
复制
Budget_Year, Budget Type, Account, (Sum of all periods from 1 to the period specified) as Amount

我使用的是MS SQL server,因此在顶部执行以下操作是可以的:

代码语言:javascript
复制
DECLARE @current_period INT = 6 
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-09 17:17:05

如果你有机会重新设计这个表格,你可能希望现在就考虑一下。

您可以使用以下内容:

代码语言:javascript
复制
DECLARE @current_period INT = 6 



SELECT 
Budget_Year, Budget Type, Account,
CASE WHEN @current_period >= 1 THEN [Period_1_Budget] ELSE 0 END +
CASE WHEN @current_period >= 2 THEN [Period_2_Budget] ELSE 0 END +
CASE WHEN @current_period >= 3 THEN [Period_3_Budget] ELSE 0 END +
CASE WHEN @current_period >= 4 THEN [Period_4_Budget] ELSE 0 END +
.....
..
CASE WHEN @current_period >= 12 THEN [Period_12_Budget] ELSE 0 END As Amount
FROM [GLM_MASTER__BUDGET]

此外,从您的描述中不清楚您是否需要一个SUM和GROUP BY,所以我省略了它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15897850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档