0

ここに少し複雑な SQL コマンドがあります。その結果をフロートとして取得するにはどうすればよいですか?

どこに置くべきCASTですAS FLOATか?

update T1 set T1.fm_hour = T2.fm_hour
from T T1 join (Select distinct name,sum(fm) over (partition by name)/60 fm_hour
                from T) T2 on T1.name = T2.name
where T1.work_type = 'out'

どうもありがとうございました。

4

2 に答える 2

2

これを行うにはいくつかの方法があります。

更新で値が設定されている場合は、値をキャストできます。

update T1 set T1.fm_hour = cast(T2.fm_hour as float)
from T T1 
join 
(
   Select distinct name, sum(fm) over (partition by name)/60 fm_hour
   from T
) T2 on T1.name = T2.name
where T1.work_type = 'out'

または、60 をキャストできます。

update T1 set T1.fm_hour = T2.fm_hour
from T T1 
join 
(
   Select distinct name, sum(fm) over (partition by name)/ cast(60 as float) fm_hour
   from T
) T2 on T1.name = T2.name
where T1.work_type = 'out'

または、60.0 で割ることもできます。

update T1 set T1.fm_hour = T2.fm_hour
from T T1 
join 
(
   Select distinct name, sum(fm) over (partition by name)/ 60.0 fm_hour
   from T
) T2 on T1.name = T2.name
where T1.work_type = 'out'
于 2013-02-26T02:59:40.237 に答える
1

これを試して :

update T1 set T1.fm_hour = T2.fm_hour
from T T1 join (Select distinct name,cast(sum(fm) over (partition by name)/60 as float) fm_hour
                from T) T2 on T1.name = T2.name
where T1.work_type = 'out'
于 2013-02-26T02:59:29.273 に答える