Исправление ошибки деления на ноль с указанием регистра - PullRequest
2 голосов
/ 13 мая 2019

Я унаследовал некоторый код с ошибкой деления на ноль.

Я получаю сообщение об ошибке и не уверен, что это код или где я его размещаю.Следует ли добавить эту строку или заменить ее?

Попытка добавления и замены с помощью этого оператора case: CASE WHEN SUM (PREOP_MME) = 0 THEN 0 ELSE SUM (PREOP_MME) / SUM (COUNT_CASES) END AS PREOP_MME).

SELECT 

PROCEDURE_NM
,SUM(PreOp_MME)     / SUM(COUNT_CASES) PreOp_MME
,SUM(IntraOp_MME)   / SUM(COUNT_CASES) IntraOp_MME 
,SUM(PostOp_MME / PostOp_LOS) PostOp_MME
,SUM(Discharge_MME) / SUM(COUNT_CASES) Discharge_MME
,SUM(TOTAL_OVERALL_MME) / SUM(COUNT_CASES) Overall_MME


FROM (

SELECT DISTINCT 

Spine.LOG_ID
,Spine.SERV_AREA_ID [Service Area ID]
,Spine.LOC_ID [Revenue Location ID] 
,Spine.PRIMARY_PHYS_ID [Provider ID]
,Spine.SURGERY_DATE
,Spine.COUNT_CASES
,Spine.PROCEDURE_NM
,Spine.PostOp_LOS

,(PreOp.SUM_SIG * PreOp.PreOp_MME)          AS PreOp_MME
,(IntraOp.SUM_SIG * IntraOp.IntraOp_MME)    AS IntraOp_MME
,(PostOp.SUM_SIG * PostOp.PACU_MME)         AS PostOp_MME
,DischMeds.DOSE_MME                 AS     Discharge_MME

,(PreOp.SUM_SIG * PreOp.PreOp_MME) + 
 (IntraOp.SUM_SIG * IntraOp.IntraOp_MME) + 
 (PostOp.SUM_SIG * PostOp.PACU_MME) + DischMeds.DOSE_MME as TOTAL_OVERALL

Ответы [ 3 ]

2 голосов
/ 13 мая 2019

Вы должны проверить, что делитель (знаменатель), а не разделенное (числитель), не равен 0, поэтому для первого столбца вы можете попробовать

SELECT 

    PROCEDURE_NM, 
    case when SUM(COUNT_CASES) = 0 
                  then 0 
                  else SUM(PreOp_MME)/ SUM(COUNT_CASES) end PreOp_MME,
    .....
1 голос
/ 13 мая 2019

Просто используйте COALESCE

Здесь я создаю небольшую демо в качестве примера

SELECT id,
       SUM(`value1`) / SUM(`value2`) as _before,
       COALESCE (SUM(`value1`) / SUM(`value2`) , 0) as _after
FROM Table1
GROUP by id;
0 голосов
/ 13 мая 2019

Спасибо за ваши ответы.

Я использовал СЛУЧАЙ, КОГДА СУММА (ПОЛЯ) = 0 ПОСЛЕ 0 ПОЛНАЯ СУММА (ПОЛЯ) / СУММА (ПОЛЯ) КОНЕЦ

Моя ошибка была в том, что я не учитывал нули в каждом случае, только в первом. Должно быть время идти домой!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...