【发布时间】:2019-01-04 01:01:21
【问题描述】:
我有以下 SQL 查询
SELECT MAX(averageSales)
FROM (
SELECT AVG(TotalSale) AS averageSales
FROM [Practice].[dbo].[Sales]
GROUP BY CAST(SalesPerson AS NVARCHAR(100))
) AS Query1;
我得到的结果为250,但我想将结果显示为250.0000。我查看了 SQL 的 RIGHT 和 LEFT 函数,但还没有弄清楚。
averageSales 的数据类型是 int。
我也尝试了以下方法
SELECT
MAX(averageSales),
CAST(MAX(averageSales) AS decimal(4,4))
FROM (
SELECT AVG(TotalSale) AS averageSales
FROM [Practice].[dbo].[Sales]
GROUP BY CAST(SalesPerson AS NVARCHAR(100))
) AS Query1;
但这会导致
将 int 转换为数据类型 numeric 的算术溢出错误。
【问题讨论】:
-
您确定要将该列设为
int吗?这听起来像一个货币字段.. -
@Blorgbeard,这是我在网上看到的一个练习考试,想自己实施解决方案。所以我复制了他们给我的任何东西。我个人不会将其设为 int 列。
-
您的
decimal(4,4)声明了一个总数为 4 位的数字(第一个“4”),其中 4 个在小数点后(第二个“4”)。这意味着它可以处理从 0.0000 到 0.9999 的任何值,这就是为什么在尝试转换 250 值时会出现溢出错误的原因。如果将其设为decimal(8,4),则转换不会产生错误。
标签: sql sql-server tsql number-formatting