Sql server SQL DateAdded函数和求和问题
我有以下疑问:Sql server SQL DateAdded函数和求和问题,sql-server,sum,case,dateadd,Sql Server,Sum,Case,Dateadd,我有以下疑问: 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 I
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
我试图得到每个赛季所有统计数据的总和。我正试图把一月份所有的额外比赛都加在一个完整的赛季里。当我运行此查询时,季节与一月日期是分开的。然而,对于一月份的所有比赛,它并没有将它们添加到所有尝试、码数等的总和中。如果有人能提供帮助,或者如果你需要额外的背景,请告诉我。谢谢你应该用一年加一个月 这是针对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 server的
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
创建一个包含列
季节
、季节开始
和季节结束
的表季节
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
然后,对特殊日期逻辑的需求消失了,并用表格表示。你的意思是你的赛季从2月开始到1月结束?是的,本质上你需要重复你的“案例”逻辑。然而,从长远来看,我会有一个季节表,我会在我的回答中概述你使用的是哪个DBMS?我使用的是SSMSit告诉我DATE_SUB不是一个内置函数,你使用的是哪个db?我使用的是SSMSi have add version for sql server太希望有用了它仍然没有将每个统计的总和相加在一起