SQL-преобразование int в double

у меня есть два bit введите столбцы в моей таблице sql, и значения в ней похожи,

FirstHalfLeave         SecondHalfLeave
 ------------           -------------
      0                      1
      1                      1

мне нужно суммировать эти два поля, чтобы он ушел на один день, и мне нужно отключить точный результат(3/2=1.5)

Я только что преобразовал эти bit to integer как

sum(CAST(StaffAttendance.FirstHalfStatus as Integer) + 
             CAST(StaffAttendance.SecondHalfStatus as integer))/2 as TotalLeave

он показывает результат как 1 не 1.5, для этого я думаю, что мне нужно бросить его, чтобы удвоить или плавать, я не знаю, как это сделать, может ли кто-нибудь помочь мне здесь, Спасибо заранее

5 ответов


использовать /2.0 вместо того, чтобы заставить decimal type

Edit:

чтобы удалить конечные нули, приведенные к float. И я думаю, что вы сделали ) неправильно. Попробуйте:

select cast(
           sum(
                 (
                   CAST(StaffAttendance.FirstHalfStatus as Integer) + 
                   CAST(StaffAttendance.SecondHalfStatus as integer)
                 ) 
                 / 2.0
           ) as float
       ) as TotalLeave
from your_table

самый простой способ преобразования в double умножается на 1.0 следующим образом:

   1.0 * (sum(CAST(StaffAttendance.FirstHalfStatus as Integer) + 
         CAST(StaffAttendance.SecondHalfStatus as integer)))/2 as TotalLeave

разделить на 2.0 и умножить на 0.5.


вы пробовали бросать бит колонной и поплавки вместо ИНЦ?

sum(CAST(StaffAttendance.FirstHalfStatus as float) + 
             CAST(StaffAttendance.SecondHalfStatus as float))/2 as TotalLeave

попробовать

 Sum(Case Cast(FirstHalfLeave + SecondHalfLeave as Numeric)) / Count(*)