获取 BudgetTransactionLine 的总和

Get Sum of BudgetTransactionLine

我正在尝试按月获取预算交易行的总和。我的查询是否有错误。 我的查询结果是:

RECIDLine   RecIDHeader Date                      Amount
5637157326  5637149076  2012-08-01 00:00:00.000   850.00
5637157342  5637149079  2012-12-01 00:00:00.000   1000.00
5637157343  5637149079  2012-12-01 00:00:00.000   80.00
5637157344  5637149079  2012-12-01 00:00:00.000   2700.00

但我想要这样的东西:

 RECIDLine  RecIDHeader Date                      Amount
    5637157326  5637149076  2012-08-01 00:00:00.000   850.00
    5637157342  5637149079  2012-12-01 00:00:00.000   3780.00

这是我的查询:

IF OBJECT_ID('tempdb..#BudgetTransTmp') IS NOT NULL
        DROP TABLE #BudgetTransTmp
    Select  
            BudgetTransactionLine.RECID                                     AS RecIdLine,
            BUDGETTRANSACTIONHEADER.RECID                                   AS RecIdHeader,
            BudgetTransactionLine.DATE,
            SUM(CAST((BudgetTransactionLine.TransactionCurrencyAmount )  as decimal(18,2))) AS Amount
    INTO   #BudgetTransTmp 
    FROM   MicrosoftDynamicsAX.dbo.BudgetTransactionLine                    AS BudgetTransactionLine

          INNER JOIN MicrosoftDynamicsAX.dbo.BUDGETTRANSACTIONHEADER        AS BUDGETTRANSACTIONHEADER
            ON  BUDGETTRANSACTIONHEADER.RECID                               =  BudgetTransactionLine.BUDGETTRANSACTIONHEADER
            AND BUDGETTRANSACTIONHEADER.budgetTransactionType               =  '3'
            AND BUDGETTRANSACTIONHEADER.PARTITION                           =  @Partition

    WHERE   BudgetTransactionLine.PARTITION                                 =@Partition
            AND BudgetTransactionCode.DATAAREAID = 'USMF'  
            AND  BudgetTransactionLine.DATE >= PeriodCalandarTmp.StartDate
            AND  BudgetTransactionLine.DATE <= PeriodCalandarTmp.EndDate


    GROUP BY    BudgetTransactionLine.DATE,
                BUDGETTRANSACTIONHEADER.RECID,
                BudgetTransactionLine.RECID             
    select * from #BudgetTransTmp

我需要将 BudgetTransactionLine.RECID 保留在 select

您不应在 GROUP BY 中包含 BudgetTransactionLine.RecId (RecIdLine)。

如果您需要此列,则必须使用 Aggregate Function 之一(例如 SELECT 部分 MIN(BudgetTransactionLine.RecId) AS RecIdLine

只需将您的全部数据放入 Simple CTE 并与您的 Temp 合并 table。请仔细检查查询并根据

插入您的代码

示例数据下方

declare @Table1 TABLE 
    (RECIDLine BIGint, RecIDHeader BIGint, Date varchar(30), Amount DECIMAL(18,2))
;

INSERT INTO @Table1
    (RECIDLine, RecIDHeader, Date, Amount)
VALUES
    (5637157326, 5637149076, '2012-08-01 00:00:00.000', 850.00),
    (5637157342, 5637149079, '2012-12-01 00:00:00.000', 1000.00),
    (5637157343, 5637149079, '2012-12-01 00:00:00.000', 80.00),
    (5637157344, 5637149079, '2012-12-01 00:00:00.000', 2700.00)
;


;WITH CTE AS (
select RecIDHeader,Date,SUM(Amount)Amount,ROW_NUMBER()OVER(PARTITION BY RecIDHeader ORDER BY  Date)RN from @Table1
GROUP BY RecIDHeader,Date )

Select T.RECIDLine,C.RecIDHeader,C.Amount,C.Amount FROM CTE C
INNER JOIN (select MIN(RECIDLine) RECIDLine, RecIDHeader from @Table1
GROUP BY RecIDHeader)T
ON T.RecIDHeader = C.RecIDHeader