none
Sumas agrupadas en tabla reciproca

    Pregunta

  • Q tal gente del foro, hoy tengo una consulta,no puedo como hacer este reporte la idea es la siguiente tengo la siguiente tabla...

     id | nombre |nivel| idMayor | Monto

    1 | 2 | 0 | NULL | 0

    2 | 2 1 | 1 | 1 | 0

    3 | 2 2 | 1 | 1 | 0

    4 | 2 1 1 |2 |2 |200

    5 | 2 2 1 |2 |3 |300

    El reporte que se desea deberia quedar asi

     

     id | nombre |nivel| idMayor | Monto

    1 | 2 | 0 | NULL | 500

    2 | 2 1 | 1 | 1 | 200

    4 | 2 1 1 |2 |2 |200

    3 | 2 2 | 1 | 1 | 300

    5 | 2 2 1 |2 |3 |300

    Como se puede ver son sumas en una estructura parecida a un arbol, la tabla tiene una relacion reciproca espero pueda ayudarme.

    Gracias.

    Lincoln VS



    viernes, 02 de septiembre de 2011 21:54

Respuestas

  • A ver prueba con esto:

    Create Table Tabla (id int,nombre VarChar(50),nivel int ,idMayor int ,Monto money)
    
    Insert Tabla (id,nombre,nivel,idMayor,Monto)
    Values(	1 , '2' , 0 , NULL, 0),
    (2 , '21' , 1 , 1 , 0),
    (3 , '22' , 1 , 1 , 0),
    (4 , '211', 2 , 2 ,200),
    (5 , '221', 2 , 3 ,300)
    
    go
    
    
    select * from tabla
    
    select 
    	t1.id,
    	t1.nombre,
    	t1.nivel,
    	t1.idMayor,
    	Monto=(Select SUM(T2.Monto) From Tabla T2 Where T2.Nombre Like RTRIM(LTRIM(T1.nombre))+'%' )
    From Tabla T1
    
    
    
    

    Espero te sirva
     

    • Marcado como respuesta Lincoln_VS viernes, 02 de septiembre de 2011 23:00
    viernes, 02 de septiembre de 2011 22:41

Todas las respuestas

  • A ver prueba con esto:

    Create Table Tabla (id int,nombre VarChar(50),nivel int ,idMayor int ,Monto money)
    
    Insert Tabla (id,nombre,nivel,idMayor,Monto)
    Values(	1 , '2' , 0 , NULL, 0),
    (2 , '21' , 1 , 1 , 0),
    (3 , '22' , 1 , 1 , 0),
    (4 , '211', 2 , 2 ,200),
    (5 , '221', 2 , 3 ,300)
    
    go
    
    
    select * from tabla
    
    select 
    	t1.id,
    	t1.nombre,
    	t1.nivel,
    	t1.idMayor,
    	Monto=(Select SUM(T2.Monto) From Tabla T2 Where T2.Nombre Like RTRIM(LTRIM(T1.nombre))+'%' )
    From Tabla T1
    
    
    
    

    Espero te sirva
     

    • Marcado como respuesta Lincoln_VS viernes, 02 de septiembre de 2011 23:00
    viernes, 02 de septiembre de 2011 22:41
  • Claro seria la forma mas practica, pero sin utilizar cadenas, podria utilizar el campo idmayor??...

    Muchas Gracias por la anterior respuesta.

    Lincoln VS

    viernes, 02 de septiembre de 2011 23:00