0

次の形式のテーブルがあります (疑似コード):

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]
    )

6のような現在の期間のintのwithでこれを照会できる必要があります

これにより、1 から指定された数までのすべての期間の合計値が返されます。

したがって、次のような出力になります。

Budget_Year, Budget Type, Account, (Sum of all periods from 1 to the period specified) as Amount

私はMS SQLサーバーを使用しているので、上部で次のようにしても問題ありません。

DECLARE @current_period INT = 6 
4

1 に答える 1

1

このテーブルを再設計する機会があれば、今すぐ検討してみてください。

次の行に沿って何かを使用できます。

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 が必要かどうかは説明から明らかではないため、省略しました。

于 2013-04-09T09:17:05.267 に答える