如何在sql server中更正写入我的更新查询
如何编写sql server查询以更新正确的金额。 这是我目前的情况,但这不是正确的解决方案如何在sql server中更正写入我的更新查询,sql,sql-server,Sql,Sql Server,如何编写sql server查询以更新正确的金额。 这是我目前的情况,但这不是正确的解决方案 我试图计算PlayerId和PlayerBonsId的兑换BonusAmount之和,但我需要使用DBT.ExternalWAllet标志从db中获取正确的金额 UPDATE R SET [RedeemedBonusAmount] = AGGR.[RedeemedBonusAmount] FROM #Results R JOIN (
我试图计算PlayerId和PlayerBonsId的兑换BonusAmount之和,但我需要使用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
不要把总数按大小写,而是把总数按大小写 然后,您也不需要在DBT.ExternalWallet上分组,它不用于外部查询的联接
UPDATE R
SET [RedeemedBonusAmount] = AGGR.[RedeemedBonusAmount]
FROM #Results R
JOIN
(
SELECT Aggr.[PlayerId],
Aggr.[PlayerBonusId],
SUM(CASE
WHEN DBT.ExternalWallet=1 THEN Aggr.Amount1
ELSE 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]
) AS AGGR ON R.playerid=Aggr.playerid and R.PlayerBonusId=Aggr.[PlayerBonusId]
你想干什么?请提供我正试图通过PlayerId和PlayerBonsId计算兑换的BonusAmount之和,但我需要使用DBT.ExternalWAllet标志从数据库中获取正确的金额从案例中取出总和:
sum(case…
为了更好,添加更多上下文和一些测试数据以帮助您。