2013-03-01 37 views
0

我有舍入值的特定列名稱的查詢:輪迴函數2008

select round([CIMtrek_CI_Act],0) as CI FROM [CIMtrek_SystemTable_DatawareHouse] 

其中[CIMtrek_CI_Act_33]不爲空並且CIMtrek_CIMtrekUniqueID = 1917

和reulst是

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> 

的值沒有被倒圓。

如果值爲10.58比我得到11。如果沒有任何價值,字段爲varchar,我必須得到empty字符串,而不是0

什麼錯誤,我在這裏做,以及如何解決同一

回答

3

它是圓的。你看到的是SQL Server的float的XML文本表示。

如果您不喜歡,請在舍入後將其轉換爲整數。

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

如果有值打印沒有任何問題,如果沒有打印'0'' 0'不應該來,如果沒有值,如何做到這一點。 – 2013-03-01 11:44:20

+0

'case when [T1]。[CIMtrek_CI_Act] =''then''else cast(cast(round([T1]。[CIMtrek_CI_Act],0)as int)as varchar)end' – GSerg 2013-03-01 12:22:05

+0

感謝它幫助找到並修復我的問題 – 2013-03-01 12:30:06