Foro de elhacker.net

Programación => Bases de Datos => Mensaje iniciado por: Black.scorpion.x en 29 Junio 2017, 23:50 pm



Título: Problema al realizar un HAVING en una Query SQL Server 2008
Publicado por: Black.scorpion.x en 29 Junio 2017, 23:50 pm
Hola estimada Gente del foro tengo la siguiente consulta ya que estoy realizando una consulta SQL en una base de Datos SQL Server 2008 rs2 necesito generar una HAVING.   ya que tengo que preguntar por número de mes de un campo de tipo Date (Fecha_Apertura) pero cuando ejecuto el  Analizador de Consulta me aparece el siguiente problema

Código
  1. SELECT     Nombre_Proyecto, Cantidad, Id_Tipo_Hallazgo, Nombre_Tipo_Hallazgo, ProyectoActivo, ID_Proyecto, Nombre_Tipo_Falla, Id_Filial, Fecha_Apertura
  2. FROM         dbo.vis_UiInf_Ranking_Hallazgos_TipoFalla
  3. GROUP BY Nombre_Proyecto, Cantidad, Id_Tipo_Hallazgo, Nombre_Tipo_Hallazgo, ID_Proyecto, Nombre_Tipo_Falla, Id_Filial, Fecha_Apertura, MONTH(Fecha_Apertura)
  4. HAVING      (MONTH(Fecha_Apertura) = 4) AND (Id_Filial = 9)

La columna 'dbo.vis_UiInf_Ranking_Hallazgos_TipoFalla.ProyectoActivo' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.

Saludos


Título: Re: Problema al realizar un HAVING en una Query SQL Server 2008
Publicado por: rubentexas en 13 Septiembre 2017, 03:36 am
Estas tratando de usar el having como en otro SQL, (me parece que mysql).
En SQL lo que estas tratando de hacer no necesita HAVING, solo un WHERE.

No tenes ninguna funcion de agregado en el SELECT, para que poner el GROUP??
*funcion de agregado seria SUM / COUNT / AVG / MAX / MIN ....

la idea del having con el group seria algo asi como el WHERE del GROUP, tambien se puede usar sin el GROUP, pero al poner el GROUP, TODOS los campos que no sean funcion de agregado deben estar en el group, en tu caso serian todos los del select, por eso carece de logica.

proba asi:

SELECT     Nombre_Proyecto, Cantidad, Id_Tipo_Hallazgo, Nombre_Tipo_Hallazgo, ProyectoActivo, ID_Proyecto, Nombre_Tipo_Falla, Id_Filial, Fecha_Apertura
FROM         dbo.vis_UiInf_Ranking_Hallazgos_TipoFalla
WHERE     MONTH(Fecha_Apertura) = 4 AND Id_Filial = 9