SELECIONAR REGISTROS PARA UMA DATA ESPECÍFICA

23/09/2016

0

Pessoal, preciso de uma ajuda, tenho uma tabela que tem os seguintes dados:
Já tentei com MAX(), COM TOP 1, nas não consigo trazer os 2 registros apenas.

CHAPA NOVA SITUACAO DATAMUDANCA
104193 A 05/08/2015
104193 F 06/10/2015
104193 A 06/11/2015
105000 A 01/05/2015
105000 F 01/12/2015
105000 A 01/01/2016

Preciso fazer um SELECT que quando eu inserir uma determinada data ele me traga a situação imediatamente ANTERIOR OU IGUAL àquela data, por exemplo:

Quero a situação que encontrava-se no dia 31/01/2016, ele me traria:

104193 A 06/11/2015
105000 A 01/01/2016
Marcelo Manzini

Marcelo Manzini

Responder

Posts

23/09/2016

Luiz Santos

Marcelo, não sei se é a solução mais correta, mas foi a única que consegui pensar no momento.


IF OBJECT_ID(N'TEMPDB..#TESTE') IS NOT NULL
	DROP TABLE #TESTE

CREATE TABLE #TESTE(
CHAPA VARCHAR(50),
NOVA_SITUACAO CHAR(1),
DATAMUDANCA DATE
)

INSERT INTO #TESTE VALUES
('104193','A',CONVERT(DATE, '05/08/2015', 103)),
('104193','F',CONVERT(DATE, '06/10/2015', 103)),
('104193','A',CONVERT(DATE, '06/11/2015', 103)),
('105000','A',CONVERT(DATE, '01/05/2015', 103)),
('105000','F',CONVERT(DATE, '01/12/2015', 103)),
('105000','A',CONVERT(DATE, '01/01/2016', 103))


SELECT #TESTE.*
  FROM #TESTE 
       INNER JOIN(	SELECT CHAPA
						 , MAX(DATAMUDANCA) AS DATAMUDANCA 
					  FROM #TESTE 
					 WHERE DATAMUDANCA <= '2016-01-31'
					GROUP BY CHAPA) AS FILTRO ON FILTRO.CHAPA = #TESTE.CHAPA AND FILTRO.DATAMUDANCA = #TESTE.DATAMUDANCA

Responder

27/09/2016

Marcelo Manzini

Obrigado Luiz, era isso mesmo, dessa forma deu certo, apenas inseri alguns filtros pra fechar a consulta.

Vlw
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar