如何在SQL Server中正确写入我的更新查询

时间:2018-12-20 09:54:38

标签: sql sql-server

我如何编写我的sql服务器查询以更新正确的金额。 这是我目前所拥有的,但这不是正确的解决方案。

我正在尝试通过PlayerId和PlayerBonusId计算REdeemedBonusAmount的总和,但是我需要使用DBT.ExternalWAllet标志来从db获取正确的金额

UPDATE R SET          
        [RedeemedBonusAmount] = AGGR.[RedeemedBonusAmount]
    FROM #Results R
    JOIN 
    (
        SELECT  Aggr.[PlayerId],
                aggr.[PlayerBonusId],
                    CASE 
                    WHEN DBT.ExternalWallet=1 THEN SUM(Aggr.Amount1)
                    ELSE SUM(Aggr.[Amount2]) 
                END AS [RedeemedBonusAmount]
        FROM table_1 Aggr
        JOIN table_2 DPB ON Aggr.[PlayerId] = DPB.[PlayerId]
        JOIN table_3 DB ON DPB.BonusId = DB.Id
        JOIN table_4 DBT ON DB.BonusTypeId= DBT.Id
        WHERE  Aggr.[TimeId] BETWEEN 2018110100 AND 2018122123 and aggr.playerid=362920
        GROUP BY Aggr.[PlayerId],aggr.[PlayerBonusId],DBT.ExternalWallet
    ) AS AGGR ON R.playerid=Aggr.playerid and R.PlayerBonusId=Aggr.[PlayerBonusId]

这是表格,如果我刚运行select,我会得到什么:

PlayerId    PlayerBonusId   RedeemedBonusAmount
362920      619622          380.000000
362920      619624          19.000000
362920      619622          0.000000
362920      619624          0.000000

1 个答案:

答案 0 :(得分:2)

不是大写和,而是大写。

然后,您也不需要在DBT.ExternalWallet上进行GROUP,而在外部查询的联接中不使用它。

false