none
Como realizar esse Join? RRS feed

  • Pergunta

  • Prezados pode parecer uma dúvida banal mas não estou conseguindo resolver este caso.

    É o seguinte tenho duas tabelas:

    Tabela 1
    Data Valor 1 Valor 2 Valor 3
    01/03/14 325,00 255,00 412,00
    01/03/14 210,00 437,00 518,00
    05/03/14 55,00 466,00 591,00
    05/03/14 498,00 432,00 492,00
    05/03/14 510,00 431,00 601,00
    10/03/14 48,00 413,00 777,00
    16/03/14 298,00 324,00 738,00
    22/03/14 299,00 347,00 749,00
    22/03/14 528,00 236,00 751,00
    Tabela 2
    Data Valor 4
    05/03/14 1500,00
    05/03/14 1415,00
    06/03/14 195,00
    06/03/14 218,00
    10/03/14 486,00
    18/03/14 550,00
    18/03/14 1000,00

    Preciso transformá-las nisto:

    TABELA ÚNICA
    Data Valor 1 Valor 2 Valor 3 Valor 4
    01/03/14 535,00 692,00 930,00 0,00
    05/03/14 1063,00 1329,00 1684,00 2915,00
    06/03/14 0,00 0,00 0,00 413,00
    10/03/14 48,00 413,00 777,00 486,00
    16/03/14 298,00 324,00 738,00 0,00
    18/03/14 0,00 0,00 0,00 1550,00
    22/03/14 827,00 583,00 1500,00 0,00

    Será que tem como? Ajudem-me por favor.

    sexta-feira, 5 de setembro de 2014 17:39

Respostas

  • Boa tarde,

    Experimente mais ou menos dessa forma:

    with
        CTE_T1 as
        (
            select 
                Data, 
                sum(Valor1) as Valor1,
                sum(Valor2) as Valor2,
                sum(Valor3) as Valor3
            from Tabela1
            group by
                Data
        ),
    
        CTE_T2 as
        (
            select 
                Data, 
                sum(Valor4) as Valor4
            from Tabela1
            group by
                Data
        )
    
    select
        isnull(t1.Data, t2.Data) as Data,
        isnull(t1.Valor1, 0) as Valor1,
        isnull(t1.Valor2, 0) as Valor2,
        isnull(t1.Valor3, 0) as Valor3,
        isnull(t2.Valor4, 0) as Valor4
    from CTE_T1 as t1
    full join CTE_T2 as t2
        on t2.Data = t1.Data

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 5 de setembro de 2014 17:50

Todas as Respostas

  • Boa tarde,

    Experimente mais ou menos dessa forma:

    with
        CTE_T1 as
        (
            select 
                Data, 
                sum(Valor1) as Valor1,
                sum(Valor2) as Valor2,
                sum(Valor3) as Valor3
            from Tabela1
            group by
                Data
        ),
    
        CTE_T2 as
        (
            select 
                Data, 
                sum(Valor4) as Valor4
            from Tabela1
            group by
                Data
        )
    
    select
        isnull(t1.Data, t2.Data) as Data,
        isnull(t1.Valor1, 0) as Valor1,
        isnull(t1.Valor2, 0) as Valor2,
        isnull(t1.Valor3, 0) as Valor3,
        isnull(t2.Valor4, 0) as Valor4
    from CTE_T1 as t1
    full join CTE_T2 as t2
        on t2.Data = t1.Data

    Espero que ajude.


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 5 de setembro de 2014 17:50
  • Veja se resolve...

    select data,valor1,valor2,valor3,0 as Valor4
    into #temp
    from tabela1

    insert #temp 
    select data,0,0,0,valor4
    from tabela2


    select data,
    sum(valor1),
    sum(valor2),
    sum(valor3),
    sum(valor4)
    from #temp
    group by data


    Tulio Rosa | http://tuliorosa.com.br | Se resolveu seu problema, marque como resposta ou vote

    sexta-feira, 5 de setembro de 2014 17:51