SQL Server - Agrupación de Datos

   
Vista:

Agrupación de Datos

Publicado por Marcos (4 intervenciones) el 03/10/2017 22:52:08
Estimados, muy buenas tardes...

Nuevamente requiero de su sabiduria para un problema....

Por favor necesito una consulta que haga calculos segun condiciones.... me explico...

tengo la siguiente base (este es el ejemplo de parte de un codigo)

codigo tipo subtipo ingresos Egresos
101010 1 A 10 0
101010 1 A 0 8
101010 2 A 10 0
101010 2 A 0 10
101010 2 A 5 0
101010 2 A 0 2
101010 2 B 25 0
101010 2 B 0 20

no he podido obtener algo asi, es decir la grupacion pero en una sola linea

codigo Tipo1-subtipoA Tipo1-subtipoB Tipo2-subtipoA Tipo2-subtipoB
101010 2 0 3 5

considerando que el valor requerido es ingresos - egresos y estos agrupados por las condicions de grupo y subgrupo

El campo tipo1-subtipoA suma todos los ingresos del tipo1, subtipo A y le resta todos los egresos del tipo 1 subtipo A

Como de costumbre agradezco de antemano la ayuda.
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

Agrupación de Datos

Publicado por Isaias (3751 intervenciones) el 03/10/2017 23:31:44
Supongo que es SQL SERVER, ya que tu duda fue colocada en este grupo, ¿Que version-edicion tienes?

¿Cuatos TIPOS y SUBTIPOS puedes tener?
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

Agrupación de Datos

Publicado por Marcos (4 intervenciones) el 04/10/2017 13:51:15
Hola muy buen dia
Efectivamente SQL server

son 7 tipos y 3 subtipos
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

Agrupación de Datos

Publicado por Isaias (3751 intervenciones) el 04/10/2017 17:49:12
Pruebalo y me comentas si te fue de utilidad


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
IF OBJECT_ID('dbo.tipo_subtipo') > 0
	drop table tipo_subtipo
 
create table tipo_subtipo (codigo varchar(6), tipo char(1), subtipo Char(1), ingresos int, egresos int)
 
insert into tipo_subtipo values(
'101010', 1,'A', 10, 0),
('101010', 1,'A', 0, 8),
('101010', 2,'A', 10, 0),
('101010', 2,'A', 0, 10),
('101010', 2,'A', 5, 0),
('101010', 2,'A', 0, 2),
('101010', 2,'B', 25, 0),
('101010', 2,'B', 0,20)
 
select x.codigo, x.tipo, x.subtipo, a.ingresos, x.egresos,sum(a.ingresos - x.egresos) as Total
from
 
(
select  a.codigo,
        a.tipo,
        a.subtipo,
		sum(a.ingresos) as ingresos
from tipo_subtipo a
group by
        a.codigo,
        a.tipo,
        a.subtipo
) as a
inner join
(select  x.codigo,
        x.tipo,
        x.subtipo,
		sum(x.egresos) as egresos
from tipo_subtipo x
group by
        x.codigo,
        x.tipo,
        x.subtipo
		) as x
on a.codigo = x.codigo and
a.tipo = x.tipo and
a.subtipo = x.subtipo
group by x.codigo, x.tipo, x.subtipo, a.ingresos, x.egresos

Resultado:

codigo tipo subtipo ingresos egresos Total
101010 1 A 10 8 2
101010 2 A 15 12 3
101010 2 B 25 20 5
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
Revisar política de publicidad