SQL Server - CONSULTA CON CASE Y GROUP BY

 
Vista:

CONSULTA CON CASE Y GROUP BY

Publicado por Cesarmx (4 intervenciones) el 15/08/2014 01:44:58
COMUNIDAD

Buenas tardes

Tengo un problema, me pidieron que realizara un reporte, donde se desglosara el ieps en 3 y en 8 y que les mostrara el total de iva, lo del ieps y el iva son rollos de contabilidad, pero lo unico que no puedo hacer es que la consulta por registro me salga en una sola fila... realice la siguiente consulta(uso Sql Server)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT MovID,CAST(v.FechaEmision AS DATE)as FechaEmision,
 
SUM((((vd.Cantidad*vd.Precio)/(1+(Impuesto1/100)))*(Impuesto1/100))) AS Total_Iva_Linea,
 
'Total Ieps 3'=(CASE
WHEN Impuesto2 = '3'
THEN  SUM(((((vd.Cantidad*vd.Precio)/(1+(Impuesto1/100)))/(1+(Impuesto2/100))*(Impuesto2/100))))
ELSE '0'
END),
'Total ieps 8'=(CASE
WHEN Impuesto2 = '8'
THEN  SUM(((((vd.Cantidad*vd.Precio)/(1+(Impuesto1/100)))/(1+(Impuesto2/100))*(Impuesto2/100))))
ELSE '0'
END)
 
FROM Venta v
JOIN ventad vd ON v.id=vd.ID
 
WHERE V.Mov IN('Factura','remision Factura','Devol remision factu','devolucion venta','cancelacion venta')
AND v.Estatus in('concluido') AND v.FechaEmision BETWEEN '01/07/2014' AND '01/07/2014'  GROUP BY vd.Impuesto2,v.MovID,v.FechaEmision

EL RESULTADO ES:
MovID--------------FechaEmision-------TOTAL_IVA_LINEA--------TOTAL_IEPS_3-----TOTAL_IEPS_8
Factura123--------01/07/2014--------------3937.777738---------------------0-------------------------0
Factura123----------01/07/2014-------------548.2758621----------------99.80749916--------------0
Factura123------------01/07/2014------------------0------------------------------0--------------------256.8888889


LO QUE NECESITO QUE ARROJE ES:

MovID---------------FechaEmision--------TOTAL_IVA_LINEA------------TOTAL_IEPS_3-----------TOTAL_IEPS_8
Factura123-------01/07/2014----------------------4486.0536-----------------99.80749916----------256.8888889


Si suman los dos resultados de la primera consulta de la columna TOTAL_IVA_LINEA da lo mismo que la segunda, por que lo esta separando en dos partes?? Porfavor necesito de su ayuda comunidad.....
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 xve
Val: 63
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

CONSULTA CON CASE Y GROUP BY

Publicado por xve (102 intervenciones) el 15/08/2014 10:06:40
Hola Cesarmx, el secreto esta en el group by... no se muy bien por que valores lo agrupas ahora, pero has probado a quitar del GROUP BY el vd.Impuesto2?

No se si se puede quitar...;(
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

CONSULTA CON CASE Y GROUP BY

Publicado por Cesarmx (4 intervenciones) el 15/08/2014 17:29:37
Gracias por contetar xve.... Ya intente quitar de la clausula Group By el vd.impuesto2 pero cuando ejecuto la consulta me marca error,,, Me dice qe vd.impuesto2 no esta incluida en ninguna agrupacion y no me muestra nada.....
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 xve
Val: 63
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

CONSULTA CON CASE Y GROUP BY

Publicado por xve (102 intervenciones) el 15/08/2014 20:38:47
Haber de esta manera:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
SELECT SUM(Total_Iva_Linea), SUM(Total Ieps 3), SUM(Total ieps 8) FROM (
 
SELECT MovID,CAST(v.FechaEmision AS DATE)as FechaEmision,
 
SUM((((vd.Cantidad*vd.Precio)/(1+(Impuesto1/100)))*(Impuesto1/100))) AS Total_Iva_Linea,
 
'Total Ieps 3'=(CASE
WHEN Impuesto2 = '3'
THEN  SUM(((((vd.Cantidad*vd.Precio)/(1+(Impuesto1/100)))/(1+(Impuesto2/100))*(Impuesto2/100))))
ELSE '0'
END),
'Total ieps 8'=(CASE
WHEN Impuesto2 = '8'
THEN  SUM(((((vd.Cantidad*vd.Precio)/(1+(Impuesto1/100)))/(1+(Impuesto2/100))*(Impuesto2/100))))
ELSE '0'
END)
 
FROM Venta v
JOIN ventad vd ON v.id=vd.ID
 
WHERE V.Mov IN('Factura','remision Factura','Devol remision factu','devolucion venta','cancelacion venta')
AND v.Estatus in('concluido') AND v.FechaEmision BETWEEN '01/07/2014' AND '01/07/2014'
GROUP BY vd.Impuesto2,v.MovID,v.FechaEmision) s1
GROUP BY MovID,FechaEmision

He realizado un select del resultado de tu select...

Coméntanos, ok?
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

CONSULTA CON CASE Y GROUP BY

Publicado por Cesarmx (4 intervenciones) el 15/08/2014 21:17:06
No me reconoce estos valores
SUM(Total_Iva_Linea), SUM(Total Ieps 3), SUM(Total ieps 8) y el valor s1

Me marca error Sintaxis Incorrecta

Pero creo que estamos cerca de la solución....
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

CONSULTA CON CASE Y GROUP BY

Publicado por Alan (1 intervención) el 20/12/2014 17:23:05
Hola, creo que podría ser así:

"SUM(Total_Iva_Linea, Total Ieps 3, Total ieps 8)" para que no te muestre error.

Por otro lado, cuando te aparece el mensaje "que vd.impuesto2 no esta incluida en ninguna agrupacion y no me muestra nada....."

Quiere decir que debes agregarlo al final en el Group By => "Group By vd.impuesto2, etc, etc"

Espero te haya ayudado en algo.
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