【问题标题】:SQL STATEMENT Values getting multiplied by 3SQL 语句值乘以 3
【发布时间】:2017-05-24 20:14:38
【问题描述】:

SUM(ISNULL(FlagHrs,0.00) + ISNULL(BackFlagSoldHrs,0.00)) AS Ttl_EmpFlagHrs

在 select 语句中使用此语句,但我在 Ttl_EmpFlagHrs 中得到的值被乘以 3,Flaghrs 和 BackFlaghrs 是某个表中存在的不同列。

【问题讨论】:

  • 能否分享完整的查询和示例数据
  • 请分享您分组的列的详细信息以及您是否在联接中使用它?
  • 我猜这涉及到一个连接,可能是一对多连接,导致返回多行......
  • 问题是什么?如何得到正确的结果?除以三可能是一种选择;-)

标签: mysql sql select mysql-workbench mysql-error-1064


【解决方案1】:

由于没有样本数据或完整查询,您是在强迫我们根据推测来回答。

根据您的问题,目标是添加FlagHrsBackFlagSoldHrs,当其为空时,将其计为零。

由于您使用的是SUM 函数,它是一个分组函数,多行的结果将被添加并显示为单个值。

根据您的问题,单行很可能重复 3 次(可能是连接的结果),因此 sum 显示为 3 次。

您可以通过删除 SUM 函数并检查实际选择作为查询结果的行来验证这一点。

解决方案

  1. 验证联接条件以确保在您的查询中选择了正确的行
  2. 如果多次相加的理论成立,可以使用AVG函数代替SUM函数,结果将相当于单行(而不是3x)
  3. 查看是否需要使用DISTINCT 关键字来删除重复行(如果不是所需的结果)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-21
    相关资源
    最近更新 更多