Bom dia/tarde/noite. Estou com um problema na criação e uma procedure. Na procedure eu preciso criar uma tabela temporaria, inserir dados nessa tabela temporaria e em seguida declaro variaveis nela, pois precisarei destes dados para a geração de um relatorio. No codigo funciona basicamente tudo, porem no momento de retornar as variveis no where, ele retorna o seguinte erro: “Each GROUP BY expression must contain at least one column that is not an outer reference.”
Abaixo esta o codigo:
USE [RastreadorTeste]
GO
/****** Criada por Fernando Guarany afim de trazer informações relevantes sobre os dados de movimentação
do veiculo. ******/
alter procedure [dbo].[Relat_Estatisticas]
declarando variavel
as
begin
–criando a tabela temporaria para converter os dados varchar em decimal
CREATE TABLE #Estatisticas(
CODIGO INT NOT NULL,
VEICULO VARCHAR(50),
CODIGOVEICULO INT,
LATITUDE VARCHAR(25),
LONGITUDE VARCHAR(25),
VELOCIDADE DECIMAL,
VELOCIDADEMAXIMA DECIMAL,
DATAHORA DATETIME,
TEMPO_VIAGEM DECIMAL,
VEL_NOMINAL DECIMAL
)
–insert na tabela temporaria com os dados convertidos.
INSERT INTO #Estatisticas(CODIGO,
VEICULO,
CODIGOVEICULO,
LATITUDE,
LONGITUDE,
VELOCIDADE,
VELOCIDADEMAXIMA,
DATAHORA,
TEMPO_VIAGEM,
VEL_NOMINAL
)
select top 50 v.codigo,
concat(v.Pessoa, v.descricao) as Carro,
c.codigoveiculo,
‘-’+ dbo.FN_RemoveCaracteresNaoInteiros (c.latitude) as Latitude,
‘-’+ dbo.FN_RemoveCaracteresNaoInteiros (c.Longitude) as Longitude,
c.Velocidade,
dbo.FN_RemoveCaracteresNaoInteiros(convert(decimal, c.velocidade)) as VelocidadeMaxima,
c.DataHora,
dbo.FN_RemoveCaracteresNaoInteiros (convert(decimal, c.tempoviagem)) AS tempo_viagem,
dbo.FN_RemoveCaracteresNaoInteiros (convert(decimal, c.velocidade)) AS vel_nominal
FROM [checkpoint] c with(nolock)
INNER JOIN veiculo v
ON v.codigo= c.codigoveiculo
AND v.ativo=1
WHERE c.CodigoVeiculo=v.codigo
–and convert(decimal, c.velocidade) >= 0
DECLARE declarando variavelcodigo int, declarando variavelcarro varchar(50), declarando variavelcodigoveiculo int, declarando variavellatitude varchar(25),
declarando variavellongitude varchar(25), declarando variavelvelocidade decimal, declarando variavelvelocidademaxima decimal, declarando variaveldatahora date,
declarando variaveltempoviagem decimal, declarando variavelvel_nominal decimal
SELECT declarando variavelcodigo = codigo, declarando variavelcarro = veiculo, declarando variavelcodigoveiculo = codigoveiculo, declarando variavellatitude = latitude,
declarando variavellongitude = longitude, declarando variavelvelocidade = velocidade, declarando variavelvelocidademaxima = max(velocidade),
declarando variaveldatahora = datahora, declarando variaveltempoviagem = min(tempo_viagem) - max(tempo_viagem), declarando variavelvel_nominal = velocidade
FROM #Estatisticas
WHERE codigo = declarando variavelcodigo
AND CODIGOVEICULO = declarando variavelcodigoveiculo
AND DATAHORA = declarando variaveldatahora
GROUP BY declarando variavelcodigo;
DROP TABLE #Estatisticas;
END
GO