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

Proceso almacenado con un Case

Estas en el tema de Proceso almacenado con un Case en el foro de SQL Server en Foros del Web. El enunciado es este: "HACER UN PROCESO ALMACENADO QUE MUESTRE LA INFORMACION DE LOS LIBROS NOMBRE º TIPO º REGALIA º OBSERVACION EN CASO DE ...
  #1 (permalink)  
Antiguo 21/01/2014, 21:42
 
Fecha de Ingreso: julio-2010
Mensajes: 191
Antigüedad: 14 años, 4 meses
Puntos: 2
Proceso almacenado con un Case

El enunciado es este:
"HACER UN PROCESO ALMACENADO QUE MUESTRE
LA INFORMACION DE LOS LIBROS NOMBRE º TIPO º REGALIA º OBSERVACION
EN CASO DE QUE LA REGALIA SEA MAYOR QUE EL PROMEDIO DE REGALIAS
OBSERVACION ='REGALIA MAYOR QUE EL PROMEDIO'
SINO 'REGALIA MENOR QUE EL PROMEDIO'"

El query que tengo es este:

Código SQL:
Ver original
  1. SELECT
  2.     title 'NOMBRE',
  3.     TYPE,
  4.     royalty,
  5.     CASE
  6.         WHEN royalty>AVG(royalty)
  7.             THEN 'Regalía mayor que el promedio'
  8.         ELSE
  9.             'Regalía menor que el promedio'
  10.     END 'OBSERVACION'
  11. FROM titles
  12. GROUP BY royalty,title,TYPE

Pero está malo, estoy trabajando con la base de datos "PUBS"
Dentro del case coloco la condición utilizando una función de agregado pero para eso necesito agrupar por cada campo.

Lo que se me viene a la mente es que la condición con funciones de agregado se deben hacer en un HAVING pero no se como plantearlo aquí.

Les agradezco su ayuda.
  #2 (permalink)  
Antiguo 21/01/2014, 21:57
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: Proceso almacenado con un Case

podrias hacerlo de este modo:


Código SQL:
Ver original
  1. SELECT *,CASE WHEN royalty>proomedio THEN 'bla' ELSE 'bla' END AS condicion FROM
  2. (
  3. SELECT
  4.     title 'NOMBRE',
  5.     TYPE,
  6.     royalty,
  7.    avg(royalty) AS promedio
  8. FROM titles
  9. GROUP BY royalty,title,TYPE
  10. ) AS t1
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me

Etiquetas: almacenado, campo, case, group, proceso, select
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




La zona horaria es GMT -6. Ahora son las 04:01.