SQL - Sumar o Agrupar resultados de un CASE WHEN

 
Vista:
sin imagen de perfil

Sumar o Agrupar resultados de un CASE WHEN

Publicado por Malow (19 intervenciones) el 29/12/2015 12:36:31
Buenos días, quería preguntarles acerca de una duda que me surge en SQL Server. Estoy realizando una quary utilizando CASE WHEN y quiero unir o sumar los registros iguales dentro de dicha consulta. Tengo algo así:

1
2
3
4
5
6
7
8
9
10
11
12
DECLARE @ID nvarchar(50)set @ID = 11000
SELECT C.Id_Compra,
CASE	WHEN(CAP.Id_Genero=1 OR CAP.Id_Genero=2 OR CAP.Id_Genero=3) THEN 'Literatura'
		WHEN(CAP.Id_Genero=5 OR CAP.Id_Genero=10 OR CAP.Id_Genero=12) THEN 'Comedia'
		WHEN(CAP.Id_Genero=4 OR CAP.Id_Genero=8) THEN 'Drama'
		WHEN(CAP.Id_Genero=6) THEN  'Policiaco' else 'error' end as género,
CAP.Valor
FROM      CAPITULO_GENERO CAP
		  LEFT JOIN Fase_Pago F ON F.Id_Fase = CAP.Id_Fase
		 -- (varios left join más)--
		  LEFT JOIN Compra C ON C.Id_Compra = MCOS.Id_Compra
WHERE   (C.Id_Compra = @ID)

Y obtengo un resultado tal que así:
C.Id_Compra / CAP.Id_Genero / Valor
11000...Literatura...10
11000...Literatura...20
11000...Comedia...5
11000...Policiaco...15
11000...Policiaco...25

Y sin embargo necesito algo así:
C.Id_Compra / CAP.Id_Genero / Valor
11000...Literatura...30
11000...Comedia...20
11000...Drama...0
11000...Policiaco...40

Muchas gracias!
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
sin imagen de perfil
Val: 109
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Sumar o Agrupar resultados de un CASE WHEN

Publicado por Rafael (111 intervenciones) el 29/12/2015 14:05:49
Supongo ya has probado algo asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
DECLARE @ID nvarchar(50)set @ID = 11000
SELECT Id_Compra
     , GENERO
     , SUM(VALOR)
FROM   (SELECT C.Id_Compra
             , CASE WHEN(CAP.Id_Genero=1 OR CAP.Id_Genero=2 OR CAP.Id_Genero=3) THEN 'Literatura'
                    WHEN(CAP.Id_Genero=5 OR CAP.Id_Genero=10 OR CAP.Id_Genero=12) THEN 'Comedia'
                    WHEN(CAP.Id_Genero=4 OR CAP.Id_Genero=8) THEN 'Drama'
                    WHEN(CAP.Id_Genero=6) THEN 'Policiaco' else 'error'
               END as genero
             , CAP.Valor
        FROM   CAPITULO_GENERO CAP
               LEFT JOIN Fase_Pago F ON F.Id_Fase = CAP.Id_Fase
               -- (varios left join más)--
               LEFT JOIN Compra C ON C.Id_Compra = MCOS.Id_Compra
        WHERE (C.Id_Compra = @ID)) Q1
GROUP  BY Id_Compra
     , GENERO


Saludos

Pd. Si te sirve la informacion, a mi me sirve un +1
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
sin imagen de perfil

Sumar o Agrupar resultados de un CASE WHEN

Publicado por Malow (19 intervenciones) el 29/12/2015 15:06:21
Efectivamente, no me ha funcionado. Pero gracias por comentar!
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