TSQL - CAST AS PERCENT

时间:2014-01-09 21:21:21

标签: sql-server tsql casting sum

在我的选择列表中,我想返回一个列,显示错过的约会百分比。当客户端未命中约会时,源列的持续时间包含“0”。所以我想总结“0”的实例并除以预定的总预约。

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))

我也尝试使用百分比作为数据类型。有任何想法吗?

1 个答案:

答案 0 :(得分:0)

SUM(CASE event_client_duration WHEN 0 THEN 1.0 ELSE 0.0 END) / COUNT(event_key)