Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有不同类型和负数/正数的两列的SQL和_Sql_Sql Server - Fatal编程技术网

具有不同类型和负数/正数的两列的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搞错了