【问题标题】:SQL return a decimal when dividing a INT by DATEDIFFSQL 在将 INT 除以 DATEDIFF 时返回小数
【发布时间】:2020-09-24 11:15:30
【问题描述】:

[单位] 是 col 1

[Units Sold or Let/week] 是 Units/DATEDIFF (col 3)

它返回一个整数。但是如果让 15 个单位需要 12 周,我希望 col 3 返回 1.25。它当前返回 1。(在下面的图像输出中突出显示)

第 1、2、3 列的代码:

,Units.Units
,DATEDIFF(week, StartofSales.[Start of Sales/Letting Revised],EndofSales.[End of Sales/Letting Revised])[Weeks Period]
,Units.Units/case when DATEDIFF(week, StartofSales.[Start of Sales/Letting Revised],EndofSales.[End of Sales/Letting Revised])= 0 then 1 else DATEDIFF(week, StartofSales.[Start of Sales/Letting Revised],EndofSales.[End of Sales/Letting Revised]) end as[Units/week]

图片

【问题讨论】:

  • 我根据语法添加了SQL Server标签。
  • 这些不是 ACTUAL 数据库表的列名,是吗?

标签: sql sql-server datediff


【解决方案1】:

我只是乘以 1.0:

Units.Units * 1.0 / DATEDIFF(week, StartofSales.[Start of Sales/Letting Revised],EndofSales.[End of Sales/Letting Revised]) 

这会将值转换为数字,因此除法有小数位。

【讨论】:

  • 不要将数值存储为字符串。我不知道是哪一列导致了这个问题。这解决了您在此处提出的问题。
  • @DasalKalubowila 。 . .这几乎是不可能的。它是一个常数,与从字符串到数字的转换无关。您的问题是其他一些列存储为字符串,而它应该是一个数字。但是,如果您可以重现这一点,请在 DB Fiddle 或类似工具中放置一个示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-01
  • 2018-09-02
  • 1970-01-01
  • 2023-03-23
相关资源
最近更新 更多