none
Como mostrar una columna de la tabla B si no existen registros en la tabla A en consulta JOIN. RRS feed

  • Pregunta

  • Buenas a todos. Mi consulta es correcta a cierto punto, porque deseo se muestren todos  los registros de la tabla CAT_CAPITULOS_COG aunque no tengan registros ligados en la tabla HOJAS_DE_PRESUPUESTO. En el siguiente ejemplo falta el capitulo 7000 con importe 0, porque no tiene registros en HOJAS_DE_PRESUPUESTO. Cabe mencionar que ya intenté al cambiar LEFT JOIN Y RIGHT JOIN y obtengo los mismos resultados. Gracias de antemano.
    martes, 3 de julio de 2018 22:05

Respuestas

  • Hola AlvaroLanda:

    create table cat_capitulos_cog (id int identity (1,1), capitulo int, genero int, descripcion varchar(100))
    create table hojas_presupuesto (cog_nivel1 int, presupuesto float)
    
    insert into cat_capitulos_cog (capitulo, genero, descripcion) values 
    (1000, 1, 'servicios'),
    (2000, 2, 'Materiales'),
    (3000, 3, 'Sg'),
    (4000, 4, 'T,A,S y...'),
    (5000, 5, 'Bienes'),
    (6000, 6, 'Inversion P'),
    (7000, 7, 'Inversion F'),
    (8000, 8, 'Participa..'),
    (9000, 9, 'Deuda')
    
    insert into hojas_presupuesto (cog_nivel1, presupuesto) values
    (1,20),
    (1,50),
    (1,30),
    (2,20),
    (3,20),
    (4,20),
    (5,20),
    (6,20),
    (8,20),
    (9,20)

    Este es el escenario y la resolución

    SELECT c.genero AS Genero,
           c.capitulo,
           c.descripcion,
           ISNULL(SUM(h.presupuesto), 0) AS importe
    FROM cat_capitulos_cog c
         LEFT JOIN hojas_presupuesto h ON c.genero = h.cog_nivel1
                                          OR h.cog_nivel1 IS NULL
    GROUP BY c.capitulo,
             c.descripcion,
             c.genero
    ORDER BY genero;
    

    Un saludo

    miércoles, 4 de julio de 2018 5:17

Todas las respuestas

  • Hola AlvaroLanda:

    create table cat_capitulos_cog (id int identity (1,1), capitulo int, genero int, descripcion varchar(100))
    create table hojas_presupuesto (cog_nivel1 int, presupuesto float)
    
    insert into cat_capitulos_cog (capitulo, genero, descripcion) values 
    (1000, 1, 'servicios'),
    (2000, 2, 'Materiales'),
    (3000, 3, 'Sg'),
    (4000, 4, 'T,A,S y...'),
    (5000, 5, 'Bienes'),
    (6000, 6, 'Inversion P'),
    (7000, 7, 'Inversion F'),
    (8000, 8, 'Participa..'),
    (9000, 9, 'Deuda')
    
    insert into hojas_presupuesto (cog_nivel1, presupuesto) values
    (1,20),
    (1,50),
    (1,30),
    (2,20),
    (3,20),
    (4,20),
    (5,20),
    (6,20),
    (8,20),
    (9,20)

    Este es el escenario y la resolución

    SELECT c.genero AS Genero,
           c.capitulo,
           c.descripcion,
           ISNULL(SUM(h.presupuesto), 0) AS importe
    FROM cat_capitulos_cog c
         LEFT JOIN hojas_presupuesto h ON c.genero = h.cog_nivel1
                                          OR h.cog_nivel1 IS NULL
    GROUP BY c.capitulo,
             c.descripcion,
             c.genero
    ORDER BY genero;
    

    Un saludo

    miércoles, 4 de julio de 2018 5:17
  • Muchas gracias, resolvió mi problema. Saludos
    miércoles, 4 de julio de 2018 14:19