locked
Consulta Complexa de Referência Cruzada RRS feed

  • Pergunta

  • Boa tarde!

     

    Tenho um problema em um aplicativo Access em uma consulta de referência cruzada com duas tabelas. Na ajuda do Access é sugerido que se utilize uma consulta mesclando os dados das duas tabelas antes de utilizar a consulta de referência cruzada, mas no meu caso não tem como. Tenho a tabela Demanda com seguintes colunas relevantes: "Área Responsável", "Periodicidade" e "Número de Controle".

     

    TRANSFORM Count(Demanda.[Número de Controle]) AS [ContarDeNúmero de Controle]


    SELECT Demanda.[Área responsável], Count(Demanda.[Número de Controle]) AS Total


    FROM Demanda
    GROUP BY Demanda.[Área responsável]
    PIVOT Demanda.Periodicidade;

     

    Essa consulta uma tabela onde tenho como colunas as periodicidades, como linhas as áreas e como valores dos campos a soma de demanda de cada área dividido por periodicidade. Há também uma coluna com o total de demandas da área:

     

    Ex:

     

    Área Responsável  Total   Diária   Semanal

    Finanças                         2               1                 1

    Jurídico                         5               3                 2

    Tecnologia                     7               2                 5

     

    A consulta que coloquei acima funciona, porém apenas as periodicidades preenchidas da tabela Demanda. Repare que se não tenho nenhum registro na tabela Demanda com periodicidade Diária, não será criada a coluna Diária. Isso está me trazendo transtornos com os relatórios que tenho que gerar, uma vez que não posso garantir a existência de algumas colunas em uma tabela.

    A solução que imaginei foi ter outra tabela chamada Periodicidade, que funciona como fonte para preenchimento da coluna periodicidade na tabela Demanda. Aí então eu utilizaria os registros de Periodicidade para Pivot da tabela, como a seguir:

     

    TRANSFORM Count(Demanda.[Número de Controle]) AS [ContarDeNúmero de Controle]


    SELECT Demanda.[Área responsável], Count(Demanda.[Número de Controle]) AS Total

    FROM Demanda, Periodicidade_consulta
    GROUP BY Demanda.[Área responsável]
    PIVOT Periodicidade.Periodicidade;

     

    Só que neste caso, os valores exibidos na tabela ficam equivocados. Alguém tem alguma idéia de como contornar essa dificuldade? Se precisar de mais explicação, por favor solicitem, pois isso está realmente pegando...

     

    Obrigado!!!

     

    Felipe

    terça-feira, 24 de julho de 2007 20:46

Respostas

  • Oi Felipe,

     

    a consulta de referência cruzada permite fixarmos algumas colunas, mesmo que elas não existam na tabela de origem:

     

    SELECT Demanda.[Área responsável], Count(Demanda.[Número de Controle]) AS Total

    FROM Demanda, Periodicidade_consulta
    GROUP BY Demanda.[Área responsável]
    PIVOT Periodicidade.Periodicidade

    IN ('Diária', 'Mensal');

     

    quarta-feira, 25 de julho de 2007 00:14
    Moderador

Todas as Respostas

  • Oi Felipe,

     

    a consulta de referência cruzada permite fixarmos algumas colunas, mesmo que elas não existam na tabela de origem:

     

    SELECT Demanda.[Área responsável], Count(Demanda.[Número de Controle]) AS Total

    FROM Demanda, Periodicidade_consulta
    GROUP BY Demanda.[Área responsável]
    PIVOT Periodicidade.Periodicidade

    IN ('Diária', 'Mensal');

     

    quarta-feira, 25 de julho de 2007 00:14
    Moderador
  • Obrigado, Luiz!

     

    Resolveu meu impasse!

     

    Abraço!

     

    Felipe

    quarta-feira, 25 de julho de 2007 16:02