具有不同类型和负数/正数的两列的SQL和
我有两列,我想得到这两列的和具有不同类型和负数/正数的两列的SQL和,sql,sql-server,Sql,Sql Server,我有两列,我想得到这两列的和 POINTS BONUS_POINTS ----------------------- 5 -1 4 0.4 7 -0.5 但问题是,一列是integer类型,另一列是double类型红利点数可以是负数,也可以是正数 我希望有这样的结果 POINTS BONUS_POINTS SUM ------------------------------------ 5
POINTS BONUS_POINTS
-----------------------
5 -1
4 0.4
7 -0.5
但问题是,一列是integer类型,另一列是double类型<代码>红利点数可以是负数,也可以是正数
我希望有这样的结果
POINTS BONUS_POINTS SUM
------------------------------------
5 -1 4
4 0.4 4,4
7 -0.5 6.5
这是我的疑问和错误的结果。我真的不明白这些价值观是从哪里来的
SELECT PLAYER_NICKNAME, SUM(GAME_POINTS) AS POINTS,
SUM(GAME_BONUSPOINTS) AS BONUS_POINTS,
SUM(CAST(POINTS AS float) + CAST(GAME_BONUSPOINTS AS float)) AS SUM
FROM PLAYERS, GAMES
WHERE PLAYERS.PLAYER_ID = GAMES.GAME_PLAYERS_PLAYERID
GROUP BY PLAYERS.PLAYER_NICKNAME
SUM
----
1.5
3.5
3.45
你能试试这个吗
select *, CAST(POINTS AS float) + CAST(BONUS_POINTS AS float) AS SUM
FROM ( SELECT PLAYER_NICKNAME, SUM(GAME_POINTS) AS POINTS,
SUM(GAME_BONUSPOINTS) AS BONUS_POINTS
FROM PLAYERS, GAMES, ROLES
WHERE PLAYERS.PLAYER_ID = GAMES.GAME_PLAYERS_PLAYERID
GROUP BY PLAYERS.PLAYER_NICKNAME)
你能试试这个吗
select *, CAST(POINTS AS float) + CAST(BONUS_POINTS AS float) AS SUM
FROM ( SELECT PLAYER_NICKNAME, SUM(GAME_POINTS) AS POINTS,
SUM(GAME_BONUSPOINTS) AS BONUS_POINTS
FROM PLAYERS, GAMES, ROLES
WHERE PLAYERS.PLAYER_ID = GAMES.GAME_PLAYERS_PLAYERID
GROUP BY PLAYERS.PLAYER_NICKNAME)
您在代码中使用同一字段两次
SUM(CAST(GAME_BONUSPOINTS AS float) + CAST(GAME_BONUSPOINTS AS float))
应该是
SUM(CAST(GAME_BONUSPOINTS AS float) + CAST(GAME_POINTS AS float))
您在代码中使用同一字段两次
SUM(CAST(GAME_BONUSPOINTS AS float) + CAST(GAME_BONUSPOINTS AS float))
应该是
SUM(CAST(GAME_BONUSPOINTS AS float) + CAST(GAME_POINTS AS float))
首先,你的查询完全是假的<代码>角色未被使用。你需要学习正确的
JOIN
语法
其次,您可以添加整数和浮点数,而无需显式转换
我建议:
SELECT p.PLAYER_NICKNAME,
SUM(g.GAME_POINTS) as POINTS,
SUM(g.GAME_BONUSPOINTS) as BONUS_POINTS,
SUM(g.GAME_BONUSPOINTS) + SUM(g.GAME_BONUSPOINTS) as total
FROM PLAYERS p JOIN
GAMES g
ON p.PLAYER_ID = g.GAME_PLAYERS_PLAYERID
GROUP BY p.PLAYER_NICKNAME;
如果查询中的总和错误,则可能是因为
角色表未正确加入。首先,您的查询完全是假的<代码>角色
未被使用。你需要学习正确的JOIN
语法
其次,您可以添加整数和浮点数,而无需显式转换
我建议:
SELECT p.PLAYER_NICKNAME,
SUM(g.GAME_POINTS) as POINTS,
SUM(g.GAME_BONUSPOINTS) as BONUS_POINTS,
SUM(g.GAME_BONUSPOINTS) + SUM(g.GAME_BONUSPOINTS) as total
FROM PLAYERS p JOIN
GAMES g
ON p.PLAYER_ID = g.GAME_PLAYERS_PLAYERID
GROUP BY p.PLAYER_NICKNAME;
如果查询中的总和错误,则可能是因为角色表未正确加入。请为DDL提供插入脚本和预期输出。请尝试将此转换(总和(游戏点数+游戏点数)转换为浮点数)转换为[sum]
请为DDL提供插入脚本和预期输出。请尝试将此转换为[SUM]。
在上一次编辑中,您更改为按点数求和,但这是游戏点数的总和,因此没有意义。如我所写,用游戏点数替换点数。另外,正如@Gordon Linoff在下面写到的,从行中删除角色,因为您没有使用该表。在上次编辑中,您更改为按点数求和,但这是游戏点数的总和,因此没有意义。如我所写,用游戏点数替换点数。另外,正如@Gordon Linoff在下面写到的,请从行中删除角色,因为您不使用该表。谢谢。我使用表角色
我的查询未满。我只使用了这个我不理解的东西,我忘记了从查询中删除角色。关于JOIN
这与来自玩家的是一样的,其中PLAYERS.PLAYER\u ID=GAMES.GAME\u PLAYERS\u PLAYERID
。非常感谢。我做错了,谢谢你。我使用表角色
我的查询未满。我只使用了这个我不理解的东西,我忘记了从查询中删除角色。关于JOIN
这与来自玩家的是一样的,其中PLAYERS.PLAYER\u ID=GAMES.GAME\u PLAYERS\u PLAYERID
。非常感谢。我把sum搞错了