Dat*_*eau -1 sql sql-server date case between
我已经尝试过下面的代码,但它抛出一个错误:
SELECT Publisher, SUM(Global_Sales) AS total_games_sold, Year,
CASE
WHEN Year < 1989 THEN SUM(Global_Sales)
WHEN Year BETWEEN 1990 AND 1999 THEN SUM(Global_Sales)
WHEN Year BETWEEN 2000 AND 2009 THEN SUM(Global_Sales)
ELSE Year > 2009 END AS Dates
FROM Vgsales
ORDER BY Year;
Run Code Online (Sandbox Code Playgroud)
如果我正确理解您的问题,您需要使用SUM
条件:
数据:
SELECT *
INTO Vgsales
FROM (VALUES
('Publisher One', 1000, 1988),
('Publisher One', 2000, 1990),
('Publisher One', 3000, 1991),
('Publisher One', 4000, 2001),
('Publisher One', 5000, 2010)
) v (Publisher, Global_Sales, [Year])
Run Code Online (Sandbox Code Playgroud)
陈述:
SELECT
Publisher,
SUM(Global_Sales) AS [total_games_sold],
SUM(CASE WHEN Year < 1989 THEN Global_Sales END) AS [1989_games_sold],
SUM(CASE WHEN Year BETWEEN 1990 AND 1999 THEN Global_Sales END) AS [1990_1999_games_sold],
SUM(CASE WHEN Year BETWEEN 2000 AND 2009 THEN Global_Sales END) AS [2000_2009_games_sold],
SUM(CASE WHEN Year > 2009 THEN Global_Sales END) AS [2009_games_sold]
FROM Vgsales
GROUP BY Publisher
ORDER BY Publisher
Run Code Online (Sandbox Code Playgroud)
结果:
出版商 | 已售游戏总数 | 1989_games_sold | 1990_1999_games_sold | 2000_2009_games_sold | 2009_games_sold |
---|---|---|---|---|---|
出版商一 | 15000 | 1000 | 5000 | 4000 | 5000 |