Erro na criação de Procedure

0 respostas
F

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

Criado 3 de outubro de 2019
Respostas 0
Participantes 1