Я полагаю, что вы рассчитываете получить процент «хороших» деталей от общего количества записей деталей в PartData_GKN05_C.
Поэтому, используя ваше определение «хороших деталей» (Outfeed_Place_Time IS NOT NULL),запрос ниже подсчитывает их, а затем делит на количество всех записей деталей в таблице.
Поскольку "count ()" возвращает целочисленное значение, мы должны преобразовать одно из "count ()" в число с плавающей точкой, ДО того, как мы разделим их так, чтобы SQL не возвращал ноль (так как "int / int"msgstr "не возвращает десятичные дроби, в то время как делает float).
Нам нужно преобразовать только один из «Count ()», потому что SQL неявно преобразует другой, но вы можете явно преобразовать оба в float, если хотите.
Вот код:
DECLARE
@Total_Good_Percent float
SELECT
@Total_Good_Percent = (
COUNT(
CASE
WHEN Outfeed_Place_Time IS NOT NULL
THEN 1
END
)
/convert(float,count(*))
)*100
FROM
PartData_GKN05_C
WHERE
Infeed_Pick_Time >= DATEADD(day, -7, GETDATE());
select
@Total_Good_Percent