Usuário com melhor resposta
Query para buscar quantas vezes o cliente ligou para o atendimento ao consumidor.

Pergunta
-
Olá Prezados, boa noite!
Alguém consegue me dar uma ajuda na minha Query? Estou a duas semanas tentando resolver uma Query no trabalho, e não consigo desenvolver ela, até mesmo por que estou iniciando agora no SQL Server.
O que preciso faze:
Eu tenho uma tabela que se chamada Desabilitados com uma lista de clientes que desabilitaram o seu plano e também reabilitaram o seu plano, e com isso eu vou fazer um JOIN em outra tabela que se chamada AGOSTO (Atendimento ao Consumidor).
Fazendo o JOIN com a tabela AGOSTO eu preciso saber, se o cliente que cancelou a linha na data XX (Tabela Desabilitados), e nessa data/e após essa data quantas vezes esse cliente retornou com o Atendimento ao Consumidor dentro de 3 dias.
Exemplo, cancelou no dia 01/08/2016 (Preciso saber quantas vezes ele ligou de 01/08/2016 até 03/08/2016).
Assim também para os clientes que reabilitaram as linhas.
Obs.: Eu tentei usar o DATEDIFF porém não entendi muito e para que serve, junto com COUNT eGROUP BY.
-- O que eu consegui fazer até o momento.
TIPOS DE COLUNA.
TABELA DESABILITADO----------------------------------------
PRODUTO (TIPO DE PRODUTO: BANDA LARGA, FONE)
ATENDIDO (DATA QUE ELE DESABILITOU OU REABILITOU)
TIPO_SOLICITACAO (DESABILITADO, REABILITADO)
CONTRATO (CONTRATO DO CLIENTE, QUE LIGA O JOIN)
TABELA AGOSTO-----------------------------------------------
NR_CONTRATO (CONTRATO DO CLIENTE, QUE LIGA O JOIN)SK_DATA (DATA QUE LIGOU NO ATENDIMENTO)
ABAIXO MINHA QUERY:
SELECT DESB.PRODUTO, DESB.ATENDIDO AS DAT_CANCELAMENTO,
CASE DESB.TIPO_SOLICITACAO
WHEN 'REABILITACAO BLOQUEIO’ THEN 'REABILITADO'
WHEN 'DESAB. PARCIAL THEN 'DESABILITADO'
ELSE 'NÃO INFORMADO'
END AS SOLICITACAO,
CONTRATO = AGO.NR_CONTRATO, DATA_LIGACAO = COUNT(AGO.SK_DATA)
FROM DESABILITADOS AS DESB INNER JOIN AGOSTO AS AGO
ON DESB.CONTRATO = AGO.NR_CONTRATO
GROUP BY DESB.PRODUTO, DESB.ATENDIDO, TIPO_SOLICITACAO, AGO.NR_CONTRATO
sexta-feira, 16 de dezembro de 2016 18:55
Respostas
-
Boa tarde,
Pelo que eu entendi, acho que você pode utilizar uma subquery para obter a quantidade de ligações.
Experimente fazer uns testes dessa forma:
SELECT DESB.PRODUTO, DESB.ATENDIDO AS DAT_CANCELAMENTO, CASE DESB.TIPO_SOLICITACAO WHEN 'REABILITACAO BLOQUEIO’ THEN 'REABILITADO' WHEN 'DESAB. PARCIAL THEN 'DESABILITADO' ELSE 'NÃO INFORMADO' END AS SOLICITACAO, DESB.CONTRATO, QTDE_LIGACOES = (SELECT COUNT(1) FROM AGOSTO AS AGO WHERE AGO.NR_CONTRATO = DESB.CONTRATO AND AGO.SK_DATA BETWEEN DESB.ATENDIDO AND DATEADD(DAY, 3, DESB.ATENDIDO)) FROM DESABILITADOS AS DESB
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator sábado, 18 de janeiro de 2020 14:01
sexta-feira, 16 de dezembro de 2016 19:29
Todas as Respostas
-
Boa tarde,
Pelo que eu entendi, acho que você pode utilizar uma subquery para obter a quantidade de ligações.
Experimente fazer uns testes dessa forma:
SELECT DESB.PRODUTO, DESB.ATENDIDO AS DAT_CANCELAMENTO, CASE DESB.TIPO_SOLICITACAO WHEN 'REABILITACAO BLOQUEIO’ THEN 'REABILITADO' WHEN 'DESAB. PARCIAL THEN 'DESABILITADO' ELSE 'NÃO INFORMADO' END AS SOLICITACAO, DESB.CONTRATO, QTDE_LIGACOES = (SELECT COUNT(1) FROM AGOSTO AS AGO WHERE AGO.NR_CONTRATO = DESB.CONTRATO AND AGO.SK_DATA BETWEEN DESB.ATENDIDO AND DATEADD(DAY, 3, DESB.ATENDIDO)) FROM DESABILITADOS AS DESB
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Junior Galvão - MVPMVP, Moderator sábado, 18 de janeiro de 2020 14:01
sexta-feira, 16 de dezembro de 2016 19:29 -
Luciana,
Como você esta armazenando a relação de ligações dos seus consumidores? Você deseja somente contar através do número do telefone?
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
sexta-feira, 16 de dezembro de 2016 21:51Moderador -
Deletedsábado, 17 de dezembro de 2016 10:15
-
Olá José,
Esse tópico eu excluir, pois estava filtrado para Comunidade, e não SQL, porém não havia resposta. Obrigado.
sábado, 17 de dezembro de 2016 21:06 -
Olá Junior, para eu contar, estamos considerando o numero de contrato do cliente, ele considera como uma ligação única no atendimento.sábado, 17 de dezembro de 2016 21:07
-
Olá Gapimex, estou fazendo os teste e já retorno com a resposta, no momento obrigado.sábado, 17 de dezembro de 2016 21:21
-
Luciano,
Certo, então o número do contrato pode ser considerado a chave primária que podemos utilizar para estabelecer este controle?
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
terça-feira, 20 de dezembro de 2016 14:48Moderador -
Boa tarde, Pedro.
Sim, considero o Contrato, que faz leitura com outra tabela!
terça-feira, 20 de dezembro de 2016 15:23 -
Luciano,
Em algum lugar você tem armazenado este número de contrato e o número que ele ligou?
Pedro Antonio Galvao Junior [MVP | MCC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
terça-feira, 20 de dezembro de 2016 16:58Moderador