none
Consulta para retornar dois campos baseados em apenas uma coluna RRS feed

  • Pergunta

  • Olá a todos!

    Gostaria de ajuda para saber se é possível executar uma consulta SQL (no Microsoft Access), através de 2 critérios que retorne a informação consolidada por data, a contagem dos critérios da coluna deve estar separada em dois campos da consulta.

    Para melhor entendimento abaixo o print da minha tabela:

    A tabela "tblExtracaoCCBR" é composta por registros cujas datas podem se repetir inúmeras vezes, por exemplo, para o dia 01/07/2015 podem haver 20 registros, 7 registros para o dia 05/07/2015. Também há dias que não existem registros na tabela, geralmente finais de semana.

    O que preciso é montar uma consulta que atenda as seguintes necessidades:

    1. Retorne os registros consolidado do mês de 1 a 31 (Não necessariamente há registro de todos os dias).
    2. Cada campo do tipo "Hora" seja somado, referente aos dados da data correspondente.
    3. O campo "StatusDaChamada" deve contar os status "Atendida" e "Não Atendida" para obter o quantitativo das ligações, referente aos dados da data correspondente.
    4. No final, a consulta deve retornar apenas 1 registro do dia correspondente existente na tabela dos campos "Data", "ChamadaEmEspera", "DuracaoDaChamada" e os novos campos "LigacoesAtendidas" e "LigacoesNaoAtendidas", o resultado consolidado do dia.

    Eu consegui criar uma consulta que me retorna os resultados corretos, porém não consegui separar o campo "StatusDaChamada" em 2 colunas, abaixo a query e seu resultado:

    OBS: Nessa consulta considerei apenas o campo "Data" e "StatusDaChamada"

    SELECT tblExtracaoCCBR.Data,

    IIF (tblExtracaoCCBR.StatusDaChamada = "Atendida", COUNT(tblExtracaoCCBR.StatusDaChamada), COUNT(tblExtracaoCCBR.StatusDaChamada)) AS Ligações

    FROM tblExtracaoCCBR

    GROUP BY tblExtracaoCCBR.Data, tblExtracaoCCBR.StatusDaChamada;

    Note que apesar dos dados terem sido contabilizados corretamente, o campo "StatusDaChamada" está inserido em apenas uma única coluna.

    Há um bom tempo estou tentando resolver este problema, porém não tive êxito.

    Caso alguém possa me ajudar será de grande ajuda.

    Desde já agradeço a todos!

    Att

    Eduardo

    sábado, 8 de agosto de 2015 02:45

Respostas

  • Eddu,

    Ve se isso ajuda um pouco:

    SELECT DISTINCT TBL1.Data
                                ,(SELECT Format(SUM(TBL2.ChamadaEmEspera), "HH:MM:ss") FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data GROUP BY TBL2.Data) AS ChamadaEmEspera
                                ,(SELECT Format(SUM(TBL2.DuracaoDaChamada), "HH:MM:ss") FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data GROUP BY TBL2.Data) AS DuracaoDaChamada
                                ,(SELECT COUNT(TBL2.StatusDaChamada) FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data AND TBL2.StatusDaChamada = "Atendida" GROUP BY TBL2.Data) AS Atendidas
                                ,(SELECT COUNT(TBL2.StatusDaChamada) FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data AND TBL2.StatusDaChamada = "Não Atendida" GROUP BY TBL2.Data) AS "Não Atendidas"
    FROM tblExtracaoCCBR TBL1

    • Sugerido como Resposta André Santo segunda-feira, 10 de agosto de 2015 20:42
    • Marcado como Resposta eddu951 quinta-feira, 13 de agosto de 2015 00:21
    segunda-feira, 10 de agosto de 2015 18:16

Todas as Respostas

  • Eddu,

    Ve se isso ajuda um pouco:

    SELECT DISTINCT TBL1.Data
                                ,(SELECT Format(SUM(TBL2.ChamadaEmEspera), "HH:MM:ss") FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data GROUP BY TBL2.Data) AS ChamadaEmEspera
                                ,(SELECT Format(SUM(TBL2.DuracaoDaChamada), "HH:MM:ss") FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data GROUP BY TBL2.Data) AS DuracaoDaChamada
                                ,(SELECT COUNT(TBL2.StatusDaChamada) FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data AND TBL2.StatusDaChamada = "Atendida" GROUP BY TBL2.Data) AS Atendidas
                                ,(SELECT COUNT(TBL2.StatusDaChamada) FROM tblExtracaoCCBR TBL2 WHERE TBL2.Data  = TBL1.Data AND TBL2.StatusDaChamada = "Não Atendida" GROUP BY TBL2.Data) AS "Não Atendidas"
    FROM tblExtracaoCCBR TBL1

    • Sugerido como Resposta André Santo segunda-feira, 10 de agosto de 2015 20:42
    • Marcado como Resposta eddu951 quinta-feira, 13 de agosto de 2015 00:21
    segunda-feira, 10 de agosto de 2015 18:16
  • Sua sugestão ajudou e muito.

    Obrigado.

    Att

    Eduardo Dias

    quinta-feira, 13 de agosto de 2015 00:22