在将两个从两个到许多表汇总的数据汇总时进行重复

问题描述 投票:0回答:0
一名球员会发出许多赌注...并且可能会或可能不会赢得任何一个或全部。

看,要汇总

WINNERS

的总数和胜利,并查找和汇总了

WAGERS
.
我认为我很亲密,但是当汇总时这些重复是重复的

有2个表...有很多一对多的关系。

还有其他列,最不相关,但是两个表中都有一个

TICKET

列。

该值在每个表中都是唯一的,但可以在两个表中

如果a
TICKET

WINNERS

表中,则必须在

WAGERS

表中
TICKET
表中的
a可能不在
WAGERS
表中 我无法创建其他表或更改当前表结构。

tables -

WINNERS


-location

Id

Draw

gamePrizegame1400400400800400WINNERS
113 648-982 3/10/2025
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
-location

Id

Draw

gameWagergame1200010002000200020002000 -location
113 648-982 3/10/2025
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
113 648-982 3/10/2025 game1
为此结果看:
Id

Draw

gameWAGER_COUNT Win_Count6110WAGERSDISTINCT -location
Wager_Amount win_amount 113 648-982 3/10/2025 game1
5 24 但根据类型等,请继续对此进行变化。
Id

Draw
game

WAGER_COUNT
Wager_Amount Win_Count win_amount113648-9823/10/2025game12550025120113648-9823/10/2025game1550524出现2行,因为有2个不同的下注量2000和1000每个结果乘以5()。 我尝试从子句中删除,但有错误。 这是我的查询:GROUP BY
JOINWINScs.wager任何帮助将不胜感激。

这样做的规范方法是在单独的子征服中执行聚合,然后将子征服加在一起。 假设每个位置/id/draw/游戏组合(如果出现在一个表中)也会出现在另一个表中,我们可以尝试:

SELECT DISTINCT cs.LOCATION, cs.ID, cs.Draw, cs.Game, COUNT(cs.Ticket) AS wager_count, CASE WHEN (cs.wager IS NOT NULL) THEN SUM(CAST(cs.Wager/100 AS decimal(9, 2))) END AS wager_amount, COUNT(cw.Ticket) AS win_count, SUM(CAST(cw.Prize/100 AS decimal(9, 2))) AS win_amount FROM Sales cs INNER JOIN winners cw ON cw.ID = cs.ID AND cw.Draw = cs.Draw AND cw.Game = cs.Game WHERE EXISTS --cs.ID IN (SELECT ID, Draw, Game FROM Winners WHERE cw.Draw >= DATEADD(day, -8, GETDATE()) ) GROUP BY cs.Location, cs.ID, cs.Draw, cs.Game, cs.wager ORDER BY cs.Location, cs.ID, cs.Draw, cs.Game

    

sql-server join duplicates
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.