Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rdpacato

Erro no Group

Recommended Posts

Pessoal,

 

 

To tentando fazer essa consulta e está dando erro:

 

 

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoTecnologia) AS CodTecnologia, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoOperadora) AS Operadora, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.StatusLinha) AS StatusLinha, 
COUNT(*) as Quantidade 
FROM Historico 
WHERE ( Historico.StatusLinha IN (16) ) 
UNION ALL  

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Dispositivo.CodigoTecnologia) AS CodTecnologia, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = SIMCard.CodigoOperadora) AS Operadora, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Linha.CodigoStatusLinha) AS StatusLinha, 
COUNT(*) as Quantidade 
FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento) 
WHERE ( Linha.CodigoStatusLinha IN (16) ) 

GROUP BY CodTecnologia, Operadora, StatusLinha ORDER BY CodTecnologia, Operadora, StatusLinha 

Erro:

 

ERRO: subconsulta utiliza coluna desagrupada "historico.codigotecnologia" na consulta externa
LINE 1: ... Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico....
^

********** Error **********

ERRO: subconsulta utiliza coluna desagrupada "historico.codigotecnologia" na consulta externa
SQL state: 42803
Character: 65

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente

 


select CodTecnologia, Operadora,  StatusLinha , count(*) qtd
from
(
SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Dispositivo.CodigoTecnologia) AS CodTecnologia,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = SIMCard.CodigoOperadora) AS Operadora,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Linha.CodigoStatusLinha) AS StatusLinha,
COUNT(*) as Quantidade
FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento)
WHERE ( Linha.CodigoStatusLinha IN (16) )

GROUP BY CodTecnologia, Operadora, StatusLinha ORDER BY CodTecnologia, Operadora, StatusLinha

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoTecnologia) AS CodTecnologia,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoOperadora) AS Operadora,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.StatusLinha) AS StatusLinha
FROM Historico
WHERE ( Historico.StatusLinha IN (16) )
UNION ALL  

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Dispositivo.CodigoTecnologia) AS CodTecnologia,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = SIMCard.CodigoOperadora) AS Operadora,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Linha.CodigoStatusLinha) AS StatusLinha
FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento)
WHERE ( Linha.CodigoStatusLinha IN (16) )
)
GROUP BY CodTecnologia, Operadora, StatusLinha
ORDER BY CodTecnologia, Operadora, StatusLinha

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Motta blz?

Da erro de sintaxe no primeiro SELECT depois do GROUP...

 

Eu consegui assim:

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoTecnologia) AS CodTecnologia, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoOperadora) AS Operadora, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.StatusLinha) AS StatusLinha, 
COUNT(*) as Quantidade 
FROM Historico 
WHERE ( Historico.StatusLinha IN (16) ) 
GROUP BY CodTecnologia, Operadora, StatusLinha

UNION ALL  

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Dispositivo.CodigoTecnologia) AS CodTecnologia, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = SIMCard.CodigoOperadora) AS Operadora, 
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Linha.CodigoStatusLinha) AS StatusLinha, 
COUNT(*) as Quantidade 
FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento) 
WHERE ( Linha.CodigoStatusLinha IN (16) ) 

GROUP BY CodTecnologia, Operadora, StatusLinha ORDER BY CodTecnologia, Operadora, StatusLinha 

 

 

Só que agora to com outro problema relacionado...

 

 

Vem valores que são iguais e só mudam a quantidade,.... e queria somar eles para não ficar dobrado... vc sabe como?

Compartilhar este post


Link para o post
Compartilhar em outros sites

... ) xxx

GROUP BY CodTecnologia, Operadora, StatusLinha

ORDER BY CodTecnologia, Operadora, StatusLinha

 

 

Por isto fiz a query daquela forma.

Que erro deu ?

 

Tente alterar este pedaço (acima) [editar no tablet é uma m5#)@ ...]

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi Motta, não entendi onde tenho que editar...

 

eu já tirei algumas coisas de la e tal, mas da erro de sintaxe....

 

 

 

ERRO: erro de sintaxe em ou próximo a "SELECT"
LINE 13: SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codig...
^

********** Error **********

ERRO: erro de sintaxe em ou próximo a "SELECT"
SQL state: 42601
Character: 909



e parece que vc repetiu o primeiro SELECT tbm

Compartilhar este post


Link para o post
Compartilhar em outros sites

Usando teu select como uma virtual ...

 

 

 

select CodTecnologia, Operadora, StatusLinha , sum(Quantidade)
from
(
SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoTecnologia) AS CodTecnologia,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.CodigoOperadora) AS Operadora,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Historico.StatusLinha) AS StatusLinha,
COUNT(*) as Quantidade
FROM Historico
WHERE ( Historico.StatusLinha IN (16) )
GROUP BY CodTecnologia, Operadora, StatusLinha

UNION ALL  

SELECT (SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Dispositivo.CodigoTecnologia) AS CodTecnologia,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = SIMCard.CodigoOperadora) AS Operadora,
(SELECT Dominio.Nome FROM Dominio WHERE Dominio.Codigo = Linha.CodigoStatusLinha) AS StatusLinha,
COUNT(*) as Quantidade
FROM SIMCard LEFT JOIN SIMCardDispositivo ON SIMCardDispositivo.SIMCard_Numero = SIMCard.Numero LEFT JOIN Dispositivo ON Dispositivo.Numero = SIMCardDispositivo.Dispositivo_Numero INNER JOIN Linha ON Linha.Numero = SIMCard.NumeroLinha LEFT JOIN Processamento ON (Processamento.Codigo = SIMCard.CodigoProcessamento OR Processamento.Codigo = Dispositivo.CodigoProcessamento)
WHERE ( Linha.CodigoStatusLinha IN (16) )
GROUP BY CodTecnologia, Operadora, StatusLinha
) tabela_virtual
group by CodTecnologia, Operadora, StatusLinha
ORDER BY CodTecnologia, Operadora, StatusLinha

Talvez tenha que fazer algum ajuste, não tenho como testar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.