sqlserver2008中的round函数

sqlserver2008中的round函数,sql,sql-server-2008-r2,rounding,Sql,Sql Server 2008 R2,Rounding,我有一个查询,它对特定列名的值进行舍入: select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse] 其中[CIMtrek_CI_Act_33]不为空且CIMtrek_CIMtrekUniqueID=1917 而罗尔斯特是 CI 1 但当我执行以下查询时: (SELECT (SELECT [T1].[CIMtrek_CIMtrekUniqueID] AS [CIMtrek_CIMtre

我有一个查询,它对特定列名的值进行舍入:

  select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse]
其中[CIMtrek_CI_Act_33]不为空且CIMtrek_CIMtrekUniqueID=1917

而罗尔斯特是

CI
1
但当我执行以下查询时:

(SELECT  (SELECT [T1].[CIMtrek_CIMtrekUniqueID]  AS [CIMtrek_CIMtrekUniqueID]
,round([T1].[CIMtrek_CI_Act],0)   AS [CIMtrek_CI_Act]
 FROM [CIMtrek_SystemTable_DatawareHouse] T1 
 WHERE T1.CIMtrek_CIMtrekUniqueID = 1917 
 FOR  XML PATH('Record'), TYPE )) FOR XML PATH('Root')
结果是

<Root>
  <Record>
    <CIMtrek_CIMtrekUniqueID>1917</CIMtrek_CIMtrekUniqueID>
    <CIMtrek_CI_Act>1.000000000000000e+000</CIMtrek_CI_Act>
  </Record>
</Root>

1917
1.000000000000000 E+000
该值未四舍五入

如果值为
10.58
,则必须得到
11
。如果没有比
0
更大的
varchar
值,那么该字段也是
varchar


我在这里犯的错误是什么?如何修复相同的错误?它是四舍五入的。您看到的是SQL Server的
浮点值的XML文本表示形式

如果您不喜欢,请在四舍五入后将其转换为整数

cast(round([T1].[CIMtrek_CI_Act],0) as int)

它是圆形的。您看到的是SQL Server的
浮点值的XML文本表示形式

如果您不喜欢,请在四舍五入后将其转换为整数

cast(round([T1].[CIMtrek_CI_Act],0) as int)

如果有值,它打印时没有任何问题,如果没有,它打印
0
0
如果没有值,它不应该出现,如何执行此操作。
当[T1].[CIMtrek_CI_Act]=''时的情况下,则“”否则将强制转换(圆形([T1].[CIMtrek_CI Act],0)作为int)作为varchar)结束
感谢它帮助找到并解决了我的问题如果有值它打印没有任何问题如果没有它打印
0
0
如果没有值就不应该出现,怎么做。
当[T1].[CIMtrek_CI__Act]=''然后''否则强制转换(强制转换(圆形([T1].[CIMtrek_CI_Act],0)as int)as varchar)结束
感谢它帮助我发现并解决了问题