SQL-DateAdded 函数和 Sum 问题

SQL-DateAdded Function and Sum issue

我有以下查询:

SELECT 
    p.name as Name, SUM(r.attempts) as Attempts, SUM(r.gains) as Positive,       
    SUM(r.losses) as Negative, SUM(r.yards) as Net, SUM(r.touchdowns) as TD,
    SUM(r.longest) as Long, year(g.date_) as Season 
FROM 
    Rush AS r 
INNER JOIN                
    PlayerGame AS pg ON r.playerGame_Id = pg.playerGame_Id 
INNER JOIN 
    Players AS p ON p.player_Id = pg.player_Id
INNER JOIN 
    Games as g ON g.game_Id = pg.game_Id 
WHERE
    g.date_ LIKE CASE 
                    WHEN month(g.date_) = 1 
                       THEN DATEADD(year, -1, g.date_)
                    ELSE g.date_ 
                 END
GROUP BY
    year(date_), name
ORDER BY 
    Season DESC, Attempts DESC, Positive, Negative, Net, TD, Long

我正在尝试获取每个赛季所有统计数据的总和。我正在尝试将一月份的所有额外比赛添加到整个赛季。当我 运行 这个查询时,季节与一月份的日期是分开的。但是,对于 1 月份进行的所有比赛,它不会将它们添加到所有尝试、码数等的总和中。如果有人可以提供帮助或者如果您需要额外的背景信息,请告诉我。谢谢

您应该使用减去月份的年份 这是 mysql

SELECT p.name as Name, SUM(r.attempts) as Attempts, SUM(r.gains) as Positive,       
SUM(r.losses) as Negative, SUM(r.yards) as Net, SUM(r.touchdowns) as TD,
SUM(r.longest) as Long, year(DATE_SUB(date_,INTERVAL 1  MONTH)) as Season 
FROM Rush AS r INNER JOIN                
PlayerGame AS pg ON r.playerGame_Id = pg.playerGame_Id 
INNER JOIN Players AS p ON p.player_Id = pg.player_Id
INNER JOIN Games as g ON g.game_Id = pg.game_Id 

Group by year(DATE_SUB(date_,INTERVAL 1  MONTH)), name
Order by Season DESC, Attempts DESC, Positive, Negative, Net, TD, Long

这用于 sql-服务器

SELECT p.name as Name, SUM(r.attempts) as Attempts, SUM(r.gains) as Positive,       
SUM(r.losses) as Negative, SUM(r.yards) as Net, SUM(r.touchdowns) as TD,
SUM(r.longest) as Long, year(DATEADD(month, -1, date_)) as Season 
FROM Rush AS r INNER JOIN                
PlayerGame AS pg ON r.playerGame_Id = pg.playerGame_Id 
INNER JOIN Players AS p ON p.player_Id = pg.player_Id
INNER JOIN Games as g ON g.game_Id = pg.game_Id 

Group by year(DATEADD(month, -1, date_)), name
Order by Season DESC, Attempts DESC, Positive, Negative, Net, TD, Long

创建一个包含 SeasonSeasonStartSeasonEnd.

列的 table Seasons
SELECT p.name as Name, SUM(r.attempts) as Attempts, SUM(r.gains) as Positive,       
SUM(r.losses) as Negative, SUM(r.yards) as Net, SUM(r.touchdowns) as TD,
SUM(r.longest) as Long, s.Season as Season 
FROM Rush AS r INNER JOIN                
PlayerGame AS pg ON r.playerGame_Id = pg.playerGame_Id 
INNER JOIN Players AS p ON p.player_Id = pg.player_Id
INNER JOIN Games as g ON g.game_Id = pg.game_Id 
INNER JOIN Seasons AS s on g.date_ BETWEEN s.SeasonStart AND s.SeasonEnd
Group by s.Season, name
Order by s.Season DESC, Attempts DESC, Positive, Negative, Net, TD, Long

那么对特殊日期逻辑的需求就消失了,由 table 表示。