SQL Server - PROBLEMAS CON GROUP BY

   
Vista:

PROBLEMAS CON GROUP BY

Publicado por Letty (48 intervenciones) el 18/08/2010 17:58:06
BUEN DIA CHICOS

ESPERO PUEDAN AYUDARME CON ESTO
TENGO PROBLEMAS CON EL GROUP BY
EL ORDER BY NO SE REQUIERE?
HASTA EL WHERE TODO ESTA PERFECTO

SELECT PO.POC01,PO.POC02,TP.CPO02,PO.POC03,PO.POC04,PO.POC05,PO.POC06,PO.POC07,CARGOS =
CASE
WHEN PO.POC07 = 'True' THEN PO.POC08
ELSE 0
END,ABONOS =
CASE
WHEN PO.POC07 = 'False' THEN PO.POC08
ELSE 0
END,CT.CTA25,CT.CTA27,TP.CPO02,PO.POC09
FROM CAUC01 AS PO, CCTA01 AS CT,CCPO01 AS TP
WHERE PO.POC02 = TP.CPO01 AND PO.POC04 = CT.CTA25 AND POC01 BETWEEN @Fechini AND @Fechfin
GROUP BY PO.POC02, PO.POC03,PO.POC01 WITH ROLLUP
--ORDER BY PO.POC02,PO.POC03,PO.POC01; NO SE REQUIERE PORQUE LAS FILAS SALEN YA ORDENADAS
GO
--,PO.POC09;
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
Imágen de perfil de Isaias

RE:PROBLEMAS CON GROUP BY

Publicado por Isaias (3180 intervenciones) el 18/08/2010 18:29:30
1.- No utilices codificacion antigua, es recomendable utilizar INNER JOIN para unir tus tablas

2.- Las fechas deben compararse SIEMPRE con >= y <=, no con BETWEEN

3.- ¿Cual es el problema con el GROUP BY?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PROBLEMAS CON GROUP BY

Publicado por Letty (48 intervenciones) el 18/08/2010 22:41:45
mmmmmmmmmmm, esta bien, aunque se me hacia mas facil antes

SELECT PO.POC02,PO.POC03,PO.POC01,PO.POC04,PO.POC05,PO.POC06,PO.POC07,CARGOS =
CASE
WHEN PO.POC07 = 'True' THEN PO.POC08
ELSE 0
END,ABONOS =
CASE
WHEN PO.POC07 = 'False' THEN PO.POC08
ELSE 0
END,CT.CTA25,CT.CTA27,TP.CPO02,PO.POC09
FROM (CAUC01 PO INNER JOIN CCPO01 TP ON PO.POC02 = TP.CPO01)
INNER JOIN CCTA01 CT ON PO.POC04 = CT.CTA25
WHERE PO.POC01 >= @Fechini AND PO.POC01 <= @Fechfin
GROUP BY PO.POC02, PO.POC03,PO.POC01 WITH ROLLUP
ORDER BY PO.POC02,PO.POC03,PO.POC01;

EL ERROR QUE ME MARCA ES
La columna 'CAUC01.POC04' 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.

nota: no la requiero en el group by
mil gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:PROBLEMAS CON GROUP BY

Publicado por Isaias (3180 intervenciones) el 18/08/2010 23:16:46
Este es el error que a mi me marca

Msg 319, Level 15, State 1, Line 13
Incorrect syntax near the keyword 'with'. If this statement is a common table expression or an xmlnamespaces clause, the previous statement must be terminated with a semicolon.

Por otro lado, ¿para que el GROUP BY?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:PROBLEMAS CON GROUP BY

Publicado por Letty (48 intervenciones) el 19/08/2010 00:02:01
es para el reporte diario de polizas

por cada poliza se requiere subtotales, es decir

tipo pol folio fecha cuenta desc-cta descripcion cargos abonos

ventas 1 01/01/2010 5201-0001 luz pago de luz 1,000.00 0.00
ventas 1 01/01/2010 1101-0001 banamex pago de luz 1,000.00
subtotales 1,000.00 1,000.00

gastos 1 01/01/2010 etc.

y asi va listando todas las polizas de un rango de fechas o por tipo y folio de poliza

aunque QUIZA la agrupacion la pueda hacer desde vb, pero como se supone estoy aprendiendo sql, me interesa saber como seria aqui.

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Isaias

RE:PROBLEMAS CON GROUP BY

Publicado por Isaias (3180 intervenciones) el 19/08/2010 19:51:44
Para poder utilizar el GROUP BY, debes hacer un COUNT, SUM, etc.

Y en tu codigo, no existe.

Ahora bien, si lo que tu quieres es que te vaya mostrando sumas parciales agrupadas por algun grupo de registros, debes utilizar COMPUTE

Bebes
---------------
ID Venta

01 200
02 300
03 50
04 30
total 580

Caballeros
---------------
ID Venta
01 800
02 1000
03 2500
total 4300


SELEC id, sum(venta)
FROM Ventas
GROUP BY id
COMPUTE SUM(venta)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar