Sql 如何添加0';s为整数
我有以下SQL查询Sql 如何添加0';s为整数,sql,sql-server,tsql,number-formatting,Sql,Sql Server,Tsql,Number Formatting,我有以下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函数,但还没有弄清楚。 averageSa
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时出现算术溢出错误
使用格式(…,'#.0000')
:
使用
CAST
和DECIMAL
非NVARCHAR
GROUP BY CAST(SalesPerson as DECIMAL(8,4))
是否确实希望该列为
int
?这听起来像是一个货币字段。@Blorgbeard,这是我在网上看到的一个实践考试,我想自己实现这个解决方案。所以我复制了他们给我的任何东西。我个人不会将此列设为int列。您的decimal(4,4)
声明的数字总共有4位(第一个“4”),其中4位在小数点之后(第二个“4”)。这意味着它可以处理0.0000到0.9999之间的任何内容,这就是为什么在尝试强制转换250的值时会出现溢出错误。如果将其设置为十进制(8,4)
,则强制转换不会产生错误。即使这个答案是正确的,我也强烈建议在前端渲染输出。
GROUP BY CAST(SalesPerson as DECIMAL(8,4))