繁体   English   中英

SSRS 从总和列中的列表中减去一个负数

[英]SSRS subtract a minus number from list in a sum column

我有一个 SSRS 数据集查询,它在一列值上有一个 SUM,它表示一个人缺勤的十进制时间,每次为学生记录缺勤时,管理人员都会输入该值。 在 uni 数据库中,工作人员似乎添加了缺勤记录,这些记录也显示了应该从记录中删除的小时数,他们只需在数字前面加上一个减号就可以做到这一点。 是否可以让此列将减号识别为减号并将其从总数中删除? 您可以在列表底部看到一条记录缺席 187.50 小时,但随后为同一缺勤期添加了另一条记录,其中指出应减去其中的 150.00 小时(他们以另一种方式填补了安置小时数的不足)。 希望我已经解释了该查询,并附上了数据集查询的屏幕截图。 我不确定我是否正确添加了屏幕截图。 谢谢。

在此处输入图片说明

我认为您可以添加一个 CASE 语句来检查 SUM 中的减号,如果它是负数,则使用 0。

CAST(dbo.srs_enl.enl_udfb AS DECIMAL(27, 2))

会成为

CAST(CASE WHEN LEFT(dbo.srs_enl.enl_udfb, 1) = '-' THEN 0 ELSE dbo.srs_enl.enl_udfb END AS DECIMAL(27, 2))

或者您可以使用布尔逻辑,如果小于 0,则将值乘以 0:

CAST(dbo.srs_enl.enl_udfb AS DECIMAL(27, 2)) * CASE WHEN CAST(dbo.srs_enl.enl_udfb AS INT) < 0 THEN 0 ELSE 1 END

我假设您希望看到最后两条记录在最后一列中显示为 37.50 的单个记录? 如果这是正确的,那么看起来您的分组列太多了。

你似乎在分组

  • sab_stuc - 好的
  • sab_begd - 好的
  • sab_endf - 好的
  • enl_eltc - 没有出现在输出中,可能可以从GROUP BY子句中删除
  • enl_udfd - 没有出现在输出中,可能可以从GROUP BY子句中删除
  • enl_ufdb - 求和的值应该从GROUP BY子句中删除

如果您从 group by 子句中删除 3 列,则总和应该按预期“正常工作”。


还有一件事...尝试为表名设置别名,这将使您的 SQL 更易于阅读。

所以像

SELECT 
      dbo.TableA.columnA, dbo.TableB.columnB
      FROM dbo.TableA
          JOIN dbo.TableB on dbo.TableA.myKeyColumn = dbo.TableB.myKeyColumn
      ORDER BY dbo.TableA.columnA

使用别名看起来像这样

SELECT 
      a.columnA, b.columnB
      FROM dbo.TableA a
          JOIN dbo.TableB b on a.myKeyColumn = b.myKeyColumn
      ORDER BY a.columnA

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM