SQL Server - VARIOS CASOS EN UNA CONSULTA

 
Vista:
sin imagen de perfil

VARIOS CASOS EN UNA CONSULTA

Publicado por KarimeCruz (1 intervención) el 30/05/2023 18:23:34
Tengo este codigo:

INSERT INTO Quintil_Categoria (MEDICO, CODIGO_MEDICO, DOMICILIO, LOCALIDAD, CODIGO_REGION, REGION, CODIGO_POSTAL, MATRICULA, MERCADO, CODIGO_MERCADO, PRESCRIPCIONES,QUINTIL,DARWIN)
SELECT *,
CASE
WHEN QUINTIL IN (1, 2, 3) THEN 'A'
WHEN QUINTIL IN (4, 5) THEN 'B'
END AS DARWIN
FROM (
SELECT *,
CASE
WHEN SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) <= SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ) / 5.0 * 1 THEN 1
WHEN SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) <= SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ) / 5.0 * 2 THEN 2
WHEN SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) <= SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ) / 5.0 * 3 THEN 3
WHEN SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) <= SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ) / 5.0 * 4 THEN 4
ELSE 5
END AS QUINTIL
FROM (
SELECT *,
SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) AS SUMA_ACUMULADA,
SUM(PRESCRIPCIONES) OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO) / 5.0 AS TAM_QUINTIL,
ROW_NUMBER() OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) AS posicion1,
ROW_NUMBER() OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) + 1 AS posicion2,
ROW_NUMBER() OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) + 2 AS posicion3,
ROW_NUMBER() OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) + 3 AS posicion4,
ROW_NUMBER() OVER (PARTITION BY CODIGO_REGION, CODIGO_MERCADO ORDER BY PRESCRIPCIONES DESC) + 4 AS posicion5,
FROM [Audit]
) AS Resultados;


Y quiero agregar estas condiciones:
CASO 1: Cuando posicion1 sea mayor a tam_quintil asignar 1 a QUINTIL en la posicion 1 y luego hacer WHEN SUMA_ACUMULADA <= TAM_QUINTIL * 2 THEN 2
WHEN SUMA_ACUMULADA <= TAM_QUINTIL * 3 THEN 3
WHEN SUMA_ACUMULADA <= TAM_QUINTIL * 4 THEN 4

CASO 2: Cuando posicion1 y posicion2 sean mayor a tam_quintil asignar 1 a QUINTIL en la posicion 1 y 2 en la posicion 2 y luego hacer WHEN SUMA_ACUMULADA <= TAM_QUINTIL * 3 THEN 3
WHEN SUMA_ACUMULADA <= TAM_QUINTIL * 4 THEN 4

CASO 3: Cuando posicion1, posicion2 y posicion3 sean mayor a tam_quintil asignar 1 a QUINTIL en la posicion 1 y 2 en la posicion 2 y 3 en la posicion 3 y luego hacer WHEN SUMA_ACUMULADA <= TAM_QUINTIL * 4 THEN 4

CASO 4: Cuando posicion1, posicion2, posicion3 y posicion4 sean mayor a tam_quintil asignar 1 a QUINTIL en la posicion 1 y 2 en la posicion 2 y 3 en la posicion 3 y 4 en la posicion 4 y luego hacer asignar 5 a lo que sobra

CASO 5: Hacer la consulta normal

Ayuda, ya lo intente de muchas formas y no me sale
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder