2016-01-14 2 views
0

Я хочу извлечь все записи бюджета, начисляемые в текущем году, и накапливаться в течение каждого месяца после. В январе, беря итог за январь, февраль берут накопленный за январь плюс накопленный февраль ... Я начал с этого запрос:Получение ежемесячных данных

IF OBJECT_ID('tempdb..#BudgetTransTmp') IS NOT NULL 
     DROP TABLE #BudgetTransTmp 
Select 
     Row_number() over(ORDER BY YEAR(BTLine.DATE),MONTH(BTLine.DATE)) as RowNumber, 
     COMBINATION.DISPLAYVALUE, 
     BTLine.LedgerDimension          AS LedgerDimension, 
     MIN(BTLine.TransactionCurrencyAmount)      AS Amount, 
     SUM(BTLine.TransactionCurrencyAmount)  
      OVER (ORDER BY YEAR(BTLine.DATE),MONTH(BTLine.DATE),BTLine.LedgerDimension,COMBINATION.DISPLAYVALUE) AS SUM, 
     YEAR(BTLine.DATE)           AS Year , 
     MONTH(BTLine.DATE)           AS MONTH 

INTO #BudgetTransTmp 
FROM MicrosoftDynamicsAX.dbo.BudgetTransactionLine     AS BTLine 


    --Get Display value 
    INNER JOIN MicrosoftDynamicsAX.dbo.DIMENSIONATTRIBUTEVALUECOMBINATION AS COMBINATION 
    ON COMBINATION.RECID           = BTLine.LEDGERDIMENSION 
GROUP BY 
      BTLine.LedgerDimension, 
      YEAR(BTLine.DATE), 
      MONTH(BTLine.DATE) 
ORDER BY RowNumber 

результат:

LedgerDimension Amount SUM  Year Month Display 
1 22565448266  850.00 850.00 2012 8  601200-001-027-- 
2 22565448265  1700.00 2550.0 2012 12 601200-002-027-- 
3 22565448266  2700.00 5250.00 2012 12 601200-001-027-- 
4 22565448267  650.00 5900.00 2012 12 601400-002-027-- 
5 22565448268  1100.00 7000.00 2012 12 601400-001-027-- 

Но я хочу, чтобы получить

LedgerDimension Amount SUM  Year Month Display 
1 22565448266  850.00 850.00 2012 8  601200-001-027-- 
2 22565448265  1700.00 1700.0 2012 12 601200-002-027-- 
3 22565448266  2700.00 3350.00 2012 12 601200-001-027-- 
4 22565448267  650.00 650.00 2012 12 601400-002-027-- 
5 22565448268  1100.00 1100.00 2012 12 601400-001-027-- 

Я думаю, что моя комбинация ORDER на (первичный ключ) должен быть betwwen LedgerDimension, год, месяц, дисплей

Любая помощь в этом отношении

ответ

1

Я думаю, что вам нужно сделать, это:

SUM(BTLine.TransactionCurrencyAmount)  
      OVER (PARTITION BY BTLine.LedgerDimension ORDER BY YEAR(BTLine.DATE),MONTH(BTLine.DATE),BTLine.LedgerDimension,COMBINATION.DISPLAYVALUE) AS SUM 

дайте мне знать, если это сработает.

+0

Да, большое вам спасибо – stoner