0
在我的選擇列表中,我想返回一列顯示未命中約會的百分比。當客戶錯過約會時,來源列的持續時間包含「0」。所以我想總結一下「0」的例子,並按預定的總預約來劃分。TSQL - CAST AS PERCENT
CAST(SUM(CASE WHEN event_client_duration = 0 THEN 1 ELSE 0 END)/COUNT(event_key) AS FLOAT)
這並不拋出一個錯誤,但它返回一個0值,除了在極少數情況下失約均超過50%,在這種情況下,返回1
SUM(CASE WHEN event_client_duration = 0 THEN 1 ELSE 0 END) -- that works
COUNT(event_key) -- that also works, but together they bonk
所以,我試圖將它轉換爲十進制,但這會導致算術溢出。
CAST(SUM(CASE WHEN e_cl_dur = 0 THEN 1 ELSE 0 END)/COUNT(e_key) AS DECIMAL(2,2))
我也嘗試使用百分比作爲數據類型。有任何想法嗎?
如果您將'CAST'移到COUNT(event_key)'周圍而不是整個項目上,它應該可以工作。你遇到的問題是你有兩個整數被分割,在你投射之前已經完成四捨五入。通過將除數轉換爲浮點數,該分區也將返回一個浮點數。 –
美女! SUM(CASE WHEN e_cl_dur = 0 THEN 1 ELSE 0 END)/ CAST(COUNT(e_key)AS FLOAT)謝謝Adam! – PowderSnorkel
[如果我是你,我會使用DECIMAL而不是FLOAT](http://blogs.msdn.com/b/khen1234/archive/2005/05/13/417153.aspx)。 –