none
Juntar 3 queyes RRS feed

  • Pergunta

  • Bom dia pessoal,

    Estou com um problema aqui no trabalho.Preciso fazer uma query que englobe as vendas, as metas e o calendario 454 e me de os valores diarios, mensais e anuais, porem a query que realizei nao esta batendo os valores com a planinha do excel que ja existe. Separadamente elas rodam e chegam a resultado correto entao acredito que seja algo nos left join.Alguem poderia olha e ver se encontra algum probema?

    Obrigada

               

    select
    si.store_id,
    ca.year_454,
    ca.day,
    ca.day_454,
    ca.week,
    ca.week_454,
    ca.month,
    ca.month_454,
    ca.year,

    it.category,
    it.subcategory1,
    sum(si.paid_price) venda,
    sum(me.meta_valor_venda)/7 meta


    from data_warehouse.dbo.calendar ca

    left join data_warehouse.dbo.sales_item si
    on left(ca.[date],11)= left(si.[date],11)

    left join skina.dbo.GIV_META_AGRUPAMENTO me

    on left(me.ano_semana_454,4)=ca.year_454 and RIGHT(me.ano_semana_454,2)= ca.week_454
    and case when me.cod_canal_distribuicao = '000001' then 'ma'
    when me.cod_canal_distribuicao ='000003' then 'gl'
     when me.cod_canal_distribuicao ='000002' then 'ou'
     when me.cod_canal_distribuicao='000005' then 'ba' end = si.store_id

     left join skina.dbo.produtos_subgrupo ps
    on substring(me.id_agrupamento,7,2)=ps.codigo_subgrupo
    and substring (me.id_agrupamento,4,2)=left(ps.grupo_produto,2)

    left join skina.dbo.produtos_linhas pl
    on left(me.id_agrupamento,2)=pl.cod_linha

    left join data_warehouse.dbo.item_info it
        on it.sku_simple = si.sku_simple 
        and it.category = pl.linha 
        and it.subcategory1 = ps.GRUPO_PRODUTO
        and it.subcategory2 = ps.SUBGRUPO_PRODUTO




    where  ca.year_454 = '2014' 
    and si.store_id = 'BA'
    and me.COD_REVISAO = '5'
    and ca.week_454 = '40'
    and it.category = 'infantil'
    and it.subcategory1 = '01-bebe'



    group by 

    si.store_id,
    ca.year,
    ca.year_454,
    it.category,
    it.subcategory1,
    me.ANO_SEMANA_454,
    me.META_VALOR_VENDA
    ,me.ID_AGRUPAMENTO,
    ca.day,
    ca.week,
    ca.month,
    ca.day_454,
    ca.week_454,
    month_454,
    me.COD_CANAL_DISTRIBUICAO

    order by
    ca.day_454 asc

    quarta-feira, 2 de dezembro de 2015 11:52

Respostas

  • Julia,

    Você poderia justamente dividir este trabalho em partes, na parte de cabeçalho do seu relatório você traz os dados que deseja apresentar.

    Na parte do detalhe você poderia justamente listar estas metas que você deseja com base na data de pesquisa, e por fim na parte do rodapé do relatório apresentar os respectivos totais e demais cálculos.

    Desta forma, você poderia ter querys específicas para cada estrutura do seu relatório e conforme o relatório vai sendo processado você vai passa a data de pesquisa como parâmetro de entrada de dados para demais querys ou subquerys.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Sugerido como Resposta Marcos SJ quarta-feira, 2 de dezembro de 2015 15:53
    • Marcado como Resposta Marcos SJ quarta-feira, 2 de dezembro de 2015 19:39
    quarta-feira, 2 de dezembro de 2015 13:31

Todas as Respostas

  • Julia,

    Vamos por partes:

    1 - O que você já conseguiu fazer?

    2 - Como esta definido o relacionamento entre estes dados?

    3 - Estes valores devem ser apresentados em conjunto com outros dados ou seria uma espécie de sumário?


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 2 de dezembro de 2015 12:56
  • Ja consegui juntar os dados da planinha de datas com as de vendas, que seriam a date_warehouse.dbo.calendar e a date_warehoouse.dbo.sales_item.Isso resulta nesta query

     

    select
    si.store_id,
    case when len(ca.[day])=1 then '0'+ca.[day] else ca.[day] end dia,
    case when len(ca.[week])=1 then '0'+ca.[week] else ca.week end semana,
    case when len(ca.[month])=1 then '0'+ca.[month] else ca.[month] end mes,
     case when len(ca.[day_454])=1 then '0'+ca.[day_454] else ca.[day_454]end day_454,  
     case when len(ca.[week_454])=1 then '0'+ca.[week_454] else ca.[week_454] end week_454,
     case when len(ca.[month_454])=1 then '0'+ca.[month_454] else ca.[month_454] end month_454,
     ca.year_454,
    ca.year,
    it.category,
    it.subcategory1,
    sum(si.paid_price) venda

    from data_warehouse.dbo.calendar ca

    left join data_warehouse.dbo.sales_item si
    on left(ca.[date],11)= left(si.[date],11)

    left join data_warehouse.dbo.item_info it
        on it.sku_simple = si.sku_simple

    where si.quantity > '0'

    and ca.year = '2014' 
    and si.store_id = 'BA'



    group by 

    si.store_id,
    ca.day,
    ca.day_454,
    ca.week_454,
    ca.month_454,
    ca.month,
    ca.week,
    ca.year,
    ca.year_454,
    it.category,
    it.subcategory1

    order by

    ca.year asc

    A minha dificuldade esta sendo colocar as metas, que ficas no Skina.dbo.GIV_meta_agrupamento, que seria essa query:

     

    select
    sum(me.meta_valor_venda)/7 meta_valor,
    lower(dbo.trim(pl.linha)),
    lower(dbo.trim(ps.grupo_produto)),
    lower(dbo.trim(ps.subgrupo_produto)),
    me.id_agrupamento,
    me.ano_semana_454,
    left(me.ano_semana_454,4) ano,
    right(me.ano_semana_454,2) semana,
    cal.month_454,
    case when me.cod_canal_distribuicao = '000001' then 'ma'
    when me.cod_canal_distribuicao ='000003' then 'gl'
     when me.cod_canal_distribuicao ='000002' then 'ou'
     when me.cod_canal_distribuicao='000005' then 'ba'
     when me.cod_canal_distribuicao='000006' then 'cd'
     else 'ops' end store

    from skina.dbo.giv_meta_agrupamento me

    left join skina.dbo.produtos_subgrupo ps
    on substring(me.id_agrupamento,7,2)=ps.codigo_subgrupo
    and substring (me.id_agrupamento,4,2)=left(ps.grupo_produto,2)

    left join skina.dbo.produtos_linhas pl
    on left(me.id_agrupamento,2)=pl.cod_linha
    left join data_warehouse.dbo.calendar cal
    on left(me.ano_semana_454,4)=cal.year_454 and right(me.ano_semana_454,2)=
    case when len(cal.week_454)=1 then '0'+cal.week_454
    else cal.week_454 end

    where me.cod_revisao='5'

    group by
    pl.linha,
    ps.grupo_produto,
    ps.subgrupo_produto,
    me.id_agrupamento,
    me.ano_semana_454,
    left(me.ano_semana_454,4),
    right(me.ano_semana_454,2),
    cal.month_454,
    case when me.cod_canal_distribuicao = '000001' then 'ma'
    when me.cod_canal_distribuicao ='000003' then 'gl'
    when me.cod_canal_distribuicao ='000002' then 'ou'
    when me.cod_canal_distribuicao='000005' then 'ba'
    when me.cod_canal_distribuicao='000006' then 'cd'
    else 'ops' end

    preciso de um relatorio onde posso pesquisar por exemplo, a meta para o dia 01/12/2015 e o quanto foi a venda real e tambem a soma da meta da semana 40 versus a venda dessa mesmo semana.

    quarta-feira, 2 de dezembro de 2015 13:27
  • Julia,

    Você poderia justamente dividir este trabalho em partes, na parte de cabeçalho do seu relatório você traz os dados que deseja apresentar.

    Na parte do detalhe você poderia justamente listar estas metas que você deseja com base na data de pesquisa, e por fim na parte do rodapé do relatório apresentar os respectivos totais e demais cálculos.

    Desta forma, você poderia ter querys específicas para cada estrutura do seu relatório e conforme o relatório vai sendo processado você vai passa a data de pesquisa como parâmetro de entrada de dados para demais querys ou subquerys.


    Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitario | SoroCodigos | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    • Sugerido como Resposta Marcos SJ quarta-feira, 2 de dezembro de 2015 15:53
    • Marcado como Resposta Marcos SJ quarta-feira, 2 de dezembro de 2015 19:39
    quarta-feira, 2 de dezembro de 2015 13:31