Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

Update y Subquery

Estas en el tema de Update y Subquery en el foro de SQL Server en Foros del Web. Buen dia a todos, tengo la siguiente tabla: id_cliente ... venta ... porcentaje ... porcentaje_acumulado ... tipo 1.....................10...........0.10........... ..........0.10.......................... 2.....................20...........0.20........... ..........0.30.......................... 3.....................30...........0.30........... ..........0.60.......................... 4.....................40...........0.40........... ..........1.00.......................... ...
  #1 (permalink)  
Antiguo 30/07/2008, 11:56
 
Fecha de Ingreso: marzo-2007
Mensajes: 80
Antigüedad: 17 años, 1 mes
Puntos: 1
Busqueda Update y Subquery

Buen dia a todos, tengo la siguiente tabla:

id_cliente ... venta ... porcentaje ... porcentaje_acumulado ... tipo
1.....................10...........0.10........... ..........0.10..........................
2.....................20...........0.20........... ..........0.30..........................
3.....................30...........0.30........... ..........0.60..........................
4.....................40...........0.40........... ..........1.00..........................

Tabla ordenarla a partir del porcentaje acumulado. Bueno tengo que darle una clasificacion a los clientes; esta clasificacion, ya la puedo hacer, pero no se como colocarla dentro de la tabla. La pregunta es: ¿Luego de obtener la clasificacion, como la guardo dentro de la misma tabla?

Ya intente crear una tabla temporal, pero el problema es el mismo, como hago para guardar el resultado del Query que me devuelve la clasificacion y luego guardar esa clasificacion dentro de la tabla

La clasificacion seria como sigue:

id_cliente ... venta ... porcentaje ... porcentaje_acumulado ... tipo
1.....................10...........0.10........... ..........0.10..........................A
1.....................20...........0.20........... ..........0.30..........................A
1.....................30...........0.30........... ..........0.60..........................A
1.....................40...........0.40........... ..........1.00..........................C

Para clasificar a los clientes hago lo siguiente: todos aquellos que el porcentaje acumulado sea menor o igual que 80, son tipo A, los que esten entre 80 y 95, son tipo B y los restantes tipo C.

Este es el scrip que utilizo para la clasificacion:
SELECT ID_CLIENTE,
CASE
WHEN (PORCENTAJE_ACUMULADO >= 0 AND PORCENTAJE_ACUMULADO <= 80) THEN 'A'
WHEN (PORCENTAJE_ACUMULADO > 80 AND PORCENTAJE_ACUMULADO <= 95) THEN 'B'
WHEN (PORCENTAJE_ACUMULADO > 95) THEN 'C'
END
'TIPO_CLIENTE'
FROM TEMPORAL_200801

Yo se que el comando Update sirve para hacer actualizaciones, pero no me logrado guardar el resultado de este query dentro de la tabla. Agradezco cualquier ayuda, y muchas gracias de antemano.
  #2 (permalink)  
Antiguo 30/07/2008, 12:09
Avatar de flaviovich  
Fecha de Ingreso: agosto-2005
Ubicación: Lima, Peru
Mensajes: 2.951
Antigüedad: 18 años, 9 meses
Puntos: 39
Respuesta: Update y Subquery

Prueba asi:
Código:
UPDATE TuTabla SET tipo = CASE 
WHEN PORCENTAJE_ACUMULADO BETWEEN 0 AND 80 THEN 'A'
WHEN PORCENTAJE_ACUMULADO BETWEEN 81 AND 95 THEN 'B'
WHEN PORCENTAJE_ACUMULADO > 95 THEN 'C'
END
__________________
No repitamos temas, usemos el Motor de busquedas
Plantea bien tu problema: Ayúdanos a ayudarte.
  #3 (permalink)  
Antiguo 30/07/2008, 14:17
 
Fecha de Ingreso: marzo-2007
Mensajes: 80
Antigüedad: 17 años, 1 mes
Puntos: 1
De acuerdo Update y Subquery

Que facil, no puedo creer que haya estado tanto tiempo buscando una solucion, y esta fuera tan sencilla, incluso, hice tablas temporales y lo resolvi de esa forma, pero ese Script es mucho mas optimo, pero utilice esta, ya que toma en cuenta todos los valores, y no deja fuera los valores entre 95.0 y 95.9

UPDATE TIPO_CLIENTE
SET TIPO =
CASE
WHEN PORCENTAJE_ACUMULADO >= 0 AND PORCENTAJE_ACUMULADO <80 THEN 'A'
WHEN PORCENTAJE_ACUMULADO >= 80 AND PORCENTAJE_ACUMULADO <95 THEN 'B'
WHEN PORCENTAJE_ACUMULADO >= 95 THEN 'C'
END
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 02:14.