Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 0
            [id] => 563063
            [titulo] => SELECIONAR REGISTROS PARA UMA DATA ESPECÍFICA
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-09-27 14:17:16
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 473509
            [status] => A
            [isExample] => 
            [NomeUsuario] => Marcelo Manzini
            [Apelido] => 
            [Foto] => 
            [Conteudo] => Obrigado Luiz, era isso mesmo, dessa forma deu certo, apenas inseri alguns filtros pra fechar a consulta.

Vlw ) )

SELECIONAR REGISTROS PARA UMA DATA ESPECÍFICA

Marcelo Manzini
   - 23 set 2016

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

Luiz Santos
|
MVP
Pontos: 780
    23 set 2016

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

#Código


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

Marcelo Manzini
   - 27 set 2016

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

Vlw