パーセンテージを計算するために次のストアドプロシージャを作成しますが、正常に動作しますが、常に正確な結果を得ることができません
たとえば、98.000
代わりに98.947
CREATE PROCEDURE sp_finger_calc_percent
AS
DECLARE @no_action decimal(18,4);
DECLARE @yes_action decimal(18,4);
SELECT @no_action = COUNT(*)
FROM Action INNER JOIN
Employee ON Action.b_num = Employee.b_num INNER JOIN
Department ON Employee.dep_id = Department.dep_id
WHERE (Department.dep_id = 50) AND (Action.action = 0);
SELECT @yes_action= COUNT(*)
FROM Action INNER JOIN
Employee ON Action.b_num = Employee.b_num INNER JOIN
Department ON Employee.dep_id = Department.dep_id
WHERE (Department.dep_id = 50) AND (Action.action = 1);
If(@no_action = 0.00)
return 100.00
Else return cast( (100.00 *(@yes_action /@no_action ) )as decimal(18,4))
;
DECLARE @return_status decimal(18,4);
EXEC @return_status = sp_finger_calc_percent
select @return_status;