Usuário com melhor resposta
Cálculo com variáveis de duas tabela diferentes. Agrupando por data

Pergunta
-
Preciso efetuar um cálculo com dados de duas tabelas distintas, quando é um calculo com um resultado eu consigo normalmente fazendo dessa forma:
select (select sum(valorX) as total X from tabelaX where DAY(Data_HoraX) = DAY(GETDATE()) and MONTH(Data_HoraX) = MONTH(GETDATE()) and YEAR(Data_HoraX) = YEAR(GETDATE())) * (select sum(valorY) as total Y from tabelaY where DAY(Data_HoraY) = DAY(GETDATE()) and MONTH(Data_HoraY) = MONTH(GETDATE()) and YEAR(Data_HoraY) = YEAR(GETDATE())) as resultado
dessa forma eu consigo o resultado desejado pois o calculo é baseado somente na data corrente.
Meu problema é que agora eu preciso desse resultado diariamente, só estou com dificuldade para agrupar esse calculo por data. Lembrando que nas duas tabelas meu campo data é um datetime. Imagino ter que usar um CAST(Data_Hora as date) para agrupar os dados mas não enchergo onde.
Fico agradecido se alguém puder ajudar e caso haja alguma duvida na minha pergunta é só falar.
Respostas
-
Deleted
- Sugerido como Resposta William John Adam Trindade quinta-feira, 26 de julho de 2018 18:01
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 3 de agosto de 2018 19:45
-
Deleted
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 3 de agosto de 2018 19:45
Todas as Respostas
-
Deleted
- Sugerido como Resposta William John Adam Trindade quinta-feira, 26 de julho de 2018 18:01
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 3 de agosto de 2018 19:45
-
Perfeito José Diz, funcionou como o esperado, porém de certa forma eu preciso complicar um pouco mais. Preciso adicionar o calculo de uma terceira tabela. Utilizando o modelo como me passastes fiz dessa forma:
with -- soma valores diários no período da tabelaX somaX as ( SELECT cast(Data_Hora as date) as Dia, sum(Potência)/12 as energia from [GreenYellow_Jaiba].[dbo].[Qgbt_ABB] group by cast(Data_Hora as date) ), -- soma valores diários no período da tabelaY somaY as ( SELECT cast(Data_Hora as date) as Dia, (sum([Irradiancia])/30)/1000 as irradiacao from [GreenYellow_Jaiba].[dbo].[Piranometro] where Equipamento = 2 group by cast(Data_Hora as date) ), -- soma valores diários no período da tabelaZ somaZ as ( SELECT cast(Data_Hora as date) as Dia, avg(Temperatura_placa) as temp from [GreenYellow_Jaiba].[dbo].[SensorTemperatura_PT100] where Equipament = 1 group by cast(Data_Hora as date) ) SELECT coalesce(X.Dia, Y.Dia, Z.Dia) as Dia, coalesce(X.energia, 0) * coalesce(Y.irradiacao, 0) / coalesce(Z.temp, 0) as resultado from somaX as X full outer join somaY as Y full outer join somaZ as Z on Y.Dia = X.Dia and on Y.Dia = Z.Dia and on X.Dia = Z.Dia order by Dia;
Porém estou com problema na comparação das datas, talvez seja erro de código mesmo mas não enxergo onde, estou ingressando nesse mundo sql agora e ainda estou aprendendo muita coisa, se puderes me ajudar mais uma vez, fico agradecido.
Att.
- Editado Willian Alaguês quinta-feira, 26 de julho de 2018 22:16
-
Deleted
- Marcado como Resposta Filipe B CastroModerator sexta-feira, 3 de agosto de 2018 19:45
-
Boa tarde,
Por falta de retorno essa thread está sendo encerrada.
Se necessário favor abrir uma nova thread.
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.