2016-03-04 49 views
0

是否正確使用Case來實現在聚合SUM中進行強制轉換或轉換,如果是這樣,那麼實現它們的正確方法是什麼?例如CAST或Convert在SUM和Case內

SUM(CASE WHEN X = 'Y' THEN Z ELSE 0.00 END) 

在此如果Z將鑄造或改建而成,它是數據類型的數字,我想將其轉換爲varchar

+1

呃,一般不會對varchars進行求和,所以我會把它作爲數字。 –

回答

3

如果你想要的是sum你的價值觀,然後再顯示結果作爲varchar,你會想要做這樣的:

Cast(Sum(case when x = y then z else 0 end) as varchar(10)) 

如果cast首先,你可以從你的sum得到意想不到的效果,或者得到一個錯誤。例如,試圖執行sum(cast([IntegerColumn] as varchar))回報:

消息8117,級別16,狀態1,行6 操作數的數據類型爲varchar是和運營商無效。

+0

這正是我想要的,謝謝!我想將結果顯示爲varchar以在其前面添加$ – walangala

+0

@ d_li1121這是客戶端工作。 –