Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   MS SQL Server (https://www.clubdelphi.com/foros/forumdisplay.php?f=23)
-   -   Having ? (https://www.clubdelphi.com/foros/showthread.php?t=70513)

Ledian_Fdez 25-10-2010 21:38:13

Having ?
 
Holas amigos:

Tengo este Procedimiento Almcenado
Código SQL [-]
CREATE   PROCEDURE Extra_calculo_diaferiados

@fechaI datetime,
@fechaF datetime

AS

SELECT A, B, C, sum(D) as Dias, sum(O) as Cobrar, Fecha
FROM   Tabla
GROUP BY A, B, C, O, Fecha
HAVING (fecha between  @fechaI and @fechaF)
ORDER BY A, B

Lo que necesito es agrupar por los campos A, B, C para realizar la suma y filtrar por un intervalo de fecha.

Como esta el procedimiento no me sirve pues me agrupa por fecha

Me hago entender,
Alguien me pudiera ayudar

Salu2...

RONPABLO 25-10-2010 22:50:50

Código SQL [-]
CREATE   PROCEDURE Extra_calculo_diaferiados

@fechaI datetime,
@fechaF datetime

AS

SELECT A, B, C, sum(D) as Dias, sum(O) as Cobrar, min(Fecha) as FIni, max(fecha) as FFin
FROM   Tabla
GROUP BY A, B, C
HAVING (fecha between  @fechaI and @fechaF)
ORDER BY A, B

lo que le entendí es algo así como esto...

Ledian_Fdez 25-10-2010 23:17:14

mmm ...
 
Grasias amigos pero no es eso lo que quiero.
Mejor no poner entonces el campo fecha en la consulta, pues ahi filtra por todo el intervalo. Ademas de que esa consulta debe darte error por que no estas agrupando por fecha.

Recuerden :

¿Cómo pudo filtrar por fecha en la consulta teniendo como parametro las fechaI y FechaF, sin agrupar por ellas?

Kipow 25-10-2010 23:28:34

Código SQL [-]
CREATE   PROCEDURE Extra_calculo_diaferiados

@fechaI datetime,
@fechaF datetime

AS

SELECT A, B, C, sum(D) as Dias, sum(O) as Cobrar, min(Fecha) as FIni
FROM   Tabla
WHERE (fecha between  @fechaI and @fechaF)
GROUP BY A, B, C
ORDER BY A, B

:saber:

RONPABLO 26-10-2010 05:54:29

Cita:

Empezado por Ledian_Fdez
Ademas de que esa consulta debe darte error por que no estas agrupando por fecha

Aja, no se en que estaba pensando, lo dije mas de memoria y sin probarla... es con el where como te dice Kipow

Ledian_Fdez 26-10-2010 15:06:46

Error
 
Cita:

Empezado por Kipow (Mensaje 380392)
Código SQL [-]
CREATE   PROCEDURE Extra_calculo_diaferiados

@fechaI datetime,
@fechaF datetime

AS

SELECT A, B, C, sum(D) as Dias, sum(O) as Cobrar, min(Fecha) as FIni
FROM   Tabla
WHERE (fecha between  @fechaI and @fechaF)
GROUP BY A, B, C
ORDER BY A, B

:saber:

Fecha is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Ledian_Fdez 26-10-2010 15:35:31

Ok !!!
 
Esta es la respuesta correcta !!!

Código SQL [-]
CREATE   PROCEDURE Extra_calculo_diaferiados

@fechaI datetime,
@fechaF datetime

AS

SELECT A, B, C, sum(D) as Dias, sum(O) as Cobrar
FROM   Tabla
WHERE (fecha between  @fechaI and @fechaF)
GROUP BY A, B, C
ORDER BY A, B

Muchas grasias amigos !!!


La franja horaria es GMT +2. Ahora son las 01:23:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi