mssql显示1个小数点(如果可用),否则显示无

Smu*_*ger 2 sql-server decimal-point

我认为很简单.

我有一个显示项目长度的查询.

查询:

select length from vw_OutstandingVsInStock1 OVI
LEFT JOIN Departments DEP
on OVI.Department COLLATE DATABASE_DEFAULT=DEP.Description
where OutstandingVolume>0.39 
Run Code Online (Sandbox Code Playgroud)

这会返回如下结果:

0.9
1.2
1.5
1.8
2.1
2.4
2.7
3.0
3.3
3.6...
Run Code Online (Sandbox Code Playgroud)

3.0我希望它显示为的情况下3

所以如果没有小数值,则显示int没有小数.如果存在十进制显示十进制到1小数点?

所以期望的输出是36不是3.06.0

我正在使用MSSQL 2012.

Mar*_*ith 5

另一个变种(小提琴)

;WITH vw_OutstandingVsInStock1 (length)
     AS (SELECT 0.9 UNION ALL
         SELECT 1.2 UNION ALL
         SELECT 1.5 UNION ALL
         SELECT 1.8 UNION ALL
         SELECT 2.1 UNION ALL
         SELECT 2.4 UNION ALL
         SELECT 2.7 UNION ALL
         SELECT 3.0 UNION ALL
         SELECT 3.3 UNION ALL
         SELECT 3.6)
SELECT IIF(length % 1 = 0,
           CAST(length AS INT),
           CAST(length AS SQL_VARIANT))
FROM   vw_OutstandingVsInStock1 
Run Code Online (Sandbox Code Playgroud)