COMO MONTO ESTA QUERY AGUPANDO CADA 2 DATAS
Olá pessoal tenho a seguinte tabela no SQL Server
Data Valor
2023-03-15 5
[txt-color=#e80000]2023-03-17 7[/txt-color]
[txt-color=#e80000]2023-03-18 9[/txt-color]
2023-03-21 5
[txt-color=#e80000]2023-03-25 7[/txt-color]
Como monto uma query para pegar o Maior valor cada duas datas.
No caso seria maior entre dia 15 e 17, maior entre 18 e 21 e como o dia 25 não tem um par, pega ele mesmo
Resulraria em:
Data Valor
2023-03-17 7
2023-03-18 9
2023-03-25 7
A tabela estaria ordenado por Data e as datas não se repetem.
Grato se alguém souber como posso fazer
Data Valor
2023-03-15 5
[txt-color=#e80000]2023-03-17 7[/txt-color]
[txt-color=#e80000]2023-03-18 9[/txt-color]
2023-03-21 5
[txt-color=#e80000]2023-03-25 7[/txt-color]
Como monto uma query para pegar o Maior valor cada duas datas.
No caso seria maior entre dia 15 e 17, maior entre 18 e 21 e como o dia 25 não tem um par, pega ele mesmo
Resulraria em:
Data Valor
2023-03-17 7
2023-03-18 9
2023-03-25 7
A tabela estaria ordenado por Data e as datas não se repetem.
Grato se alguém souber como posso fazer
Select max(valor) where data>="datamenor" and data <="datamaior"
Opa,
Maior cada Duas datas
Maior cada Duas datas
Talvez facilitaria se se colocassemos em uma primeira tablela um agrupamento ai pegaria o maior em cada grupo,
Como poderia fazer um Gupo cada duas linhas?
Grupo Data Valor
1 2023-03-15 5
1 2023-03-17 7
2 2023-03-18 9
2 2023-03-21 5
3 2023-03-25 7
Como poderia fazer um Gupo cada duas linhas?
Grupo Data Valor
1 2023-03-15 5
1 2023-03-17 7
2 2023-03-18 9
2 2023-03-21 5
3 2023-03-25 7
Qual o critério para as duas datas que quer pegar o maior?
Pegar duas linhas não tem criterio, sempre serão duas linhas fixas.
Na tabela principal não tem mais nada que identifique cada duas linhas.
A unica coisa que tenho uma sequencia crescente de datas e valores
Na tabela principal não tem mais nada que identifique cada duas linhas.
A unica coisa que tenho uma sequencia crescente de datas e valores
Será que só um loop e colocar um contador + 1 cada dois registros em uma tabela e depois numa tabela 2 vejo o maior por grupo
Achei interessante e acabei pegando um pouco do horário de almoço pra fazer.
Segue um exemplo:
Ve se faz sentido. Se tiver alguma dúvida sobre algo, só avisar.
Segue um exemplo:
DECLARE @ExemploTabela AS TABLE
(
[data] date PRIMARY KEY,
valor int
)
INSERT INTO @ExemploTabela ([data], valor) VALUES
("2023-03-15", 5), ("2023-03-17", 7), ("2023-03-18", 9),
("2023-03-21", 5), ("2023-03-25", 7)
;WITH tPosicional(posicao, [data], valor) AS
(
SELECT
*
FROM
(
SELECT
ROW_NUMBER() OVER (order by t2.[data] ASC) as posicao,
t2.*
FROM
@ExemploTabela t2
) t1
)
SELECT
CASE WHEN t2.valor > t1.valor THEN t2.[data] ELSE t1.[data] END [Data],
CASE WHEN t2.valor > t1.valor THEN t2.valor ELSE t1.valor END Valor
FROM
tPosicional t1
LEFT JOIN tPosicional t2 on t1.posicao = t2.posicao - 1
WHERE
t1.posicao % 2 = 1
Ve se faz sentido. Se tiver alguma dúvida sobre algo, só avisar.
DS2T,
Perfeito, funcionou 100% como precisava!
Muito Obrigado.
Perfeito, funcionou 100% como precisava!
Muito Obrigado.
Tópico encerrado , respostas não são mais permitidas