在我的数据库中有一个名为game_id的列,我想将基于game_id的组的其他值相加。但是我有一个问题,我有game_id 1999和game_id 19999它们的值不同但是是同一游戏。我正在寻找有关如何将这两个game_id组合在一起的解决方案。
答案 0 :(得分:0)
您可以将值更改为所需的值,以使groupby语句按您的意愿工作。
UPDATE table_name
SET game_id = 1999
WHERE game_id = 19999;
答案 1 :(得分:0)
可以使用case when和temp表的情况
IF EXISTS(SELECT [name] FROM tempdb.sys.tables WHERE [name] like '#LocalTempTablo%')
BEGIN
DROP TABLE #LocalTempTablo;
END;
CREATE TABLE #LocalTempTablo
(
game_id int,
sumexample int
)
INSERT INTO #LocalTempTablo SELECT CASE WHEN game_id=1999 or game_id=19999 THEN 1999 ELSE 1999 END, SUM(sumexample) FROM games WHERE game_id=1999 or game_id=19999
GROUP BY game_id
SELECT game_id, SUM(sumexample) FROM #LocalTempTablo
GROUP BY game_id
答案 2 :(得分:0)
如果这些是需要组合的特定游戏,则可以使用case
表达式:
select (case when game_id = 19999 then 1999 else game_id end) as imputed_game_id,
sum(score) -- or whatever
from t
group by imputed_game_id;
您还可以使用替换表来处理此问题-也许直接内置在查询中:
select coalesce(v.new_game_id, t.game_id) as imputed_game_id,
. . .
from t left join
(values (19999, 1999)
) v(game_id, new_game_id)
on t.game_id = v.game_id
group by imputed_game_id;
这对于替换多个game_id
很方便。