none
Buscar registos com Data mais recente Usando condicao RRS feed

  • Pergunta

  • Boa tarde, 

    Tenho a seguinte consulta:

    SELECT 
    fm.FIELDCODE, 
    fm.BLOCK_CODE, 
    bl.BLOCK_DESC, 
    cat.CATEGORY_CODE, 
    cat.CATEGORY_ABBREV, 
    fm.FIELD_AREA, 
    fm.PLANTATION_DATE, 
    fm.HARVEST_END_DATE 
    
    FROM 
    FM_BLOCK bl, 
    FM_FIELD_CATEGORY cat, 
    FM_FIELDMASTER_DETAIL fm  
    WHERE 
    fm.PLANTATION_DATE =(  
    SELECT MAX(fm.PLANTATION_DATE) FROM FM_FIELDMASTER_DETAIL fm where fm.FIELDCODE = '102')
    and fm.BLOCK_CODE = bl.BLOCK_CODE
    and fm.DPTCOD = bl.DPTCOD 
    and fm.CATEGORY_CODE = cat.CATEGORY_CODE 
    and fm.FIELDCODE = '102' 


    Como faco a consulta para me retornar o FIELDCODE com PLANTATION_DATE mais recente caso a coluna HARVEST_END DATE nao tenha valor, caso a coluna HARVEST_END_DATE tenha registo me retorne FIELDCODE com HARVEST_END_DATE mais recente como faco, alguma sugestao??? pois a minha consulta so me traz o FIELDCODE com PLANTATION_DATE mais recente.
    quinta-feira, 1 de dezembro de 2016 15:22

Respostas

  • Deleted
    quinta-feira, 1 de dezembro de 2016 22:13
  • Não consegui testar ainda ,mas algo assim acredito que funcione

    DECLARE @FIELDCODE VARCHAR(10) = '102';
    
    GO
    
    WITH    Dados
              AS ( SELECT   [FIELDCODE] = fm.FIELDCODE ,
                            [BLOCK_CODE] = fm.BLOCK_CODE ,
                            [BLOCK_DESC] = bl.BLOCK_DESC ,
                            [CATEGORY_CODE] = cat.CATEGORY_CODE ,
                            [CATEGORY_ABBREV] = cat.CATEGORY_ABBREV ,
                            [FIELD_AREA] = fm.FIELD_AREA ,
                            [PLANTATION_DATE] = fm.PLANTATION_DATE ,
    						[HARVEST_END_DATE] = fm.HARVEST_END_DATE
                            [MAX_PLANTATION_DATE] = MAX(fm.PLANTATION_DATE) OVER ( PARTITION BY FIELDCODE ) ,
    			[MAX_HARVEST_END_DATE] = MAX(fm.HARVEST_END_DATE) OVER ( PARTITION BY FIELDCODE ) ,
                   FROM     FM_BLOCK bl ,
                            FM_FIELD_CATEGORY cat ,
                            FM_FIELDMASTER_DETAIL fm
                   WHERE    fm.BLOCK_CODE = bl.BLOCK_CODE
                            AND fm.DPTCOD = bl.DPTCOD
                            AND fm.CATEGORY_CODE = cat.CATEGORY_CODE
                            AND fm.FIELDCODE = @FIELDCODE
                 )
        SELECT  D.[Coloque Todos os campos que c precisa] ,
                [Data a ser mostrada] =IIF(Dados.HARVEST_END_DATE IS NULL ,Dados.MAX_PLANTATION_DATE,Dados.MAX_HARVEST_END_DATE),
        FROM    Dados D


    Wesley Neves


    • Editado Wesley Neves sexta-feira, 2 de dezembro de 2016 11:40 sql
    • Marcado como Resposta JosefoSad segunda-feira, 5 de dezembro de 2016 14:32
    sexta-feira, 2 de dezembro de 2016 11:40

Todas as Respostas

  • Deleted
    quinta-feira, 1 de dezembro de 2016 22:13
  • Não consegui testar ainda ,mas algo assim acredito que funcione

    DECLARE @FIELDCODE VARCHAR(10) = '102';
    
    GO
    
    WITH    Dados
              AS ( SELECT   [FIELDCODE] = fm.FIELDCODE ,
                            [BLOCK_CODE] = fm.BLOCK_CODE ,
                            [BLOCK_DESC] = bl.BLOCK_DESC ,
                            [CATEGORY_CODE] = cat.CATEGORY_CODE ,
                            [CATEGORY_ABBREV] = cat.CATEGORY_ABBREV ,
                            [FIELD_AREA] = fm.FIELD_AREA ,
                            [PLANTATION_DATE] = fm.PLANTATION_DATE ,
    						[HARVEST_END_DATE] = fm.HARVEST_END_DATE
                            [MAX_PLANTATION_DATE] = MAX(fm.PLANTATION_DATE) OVER ( PARTITION BY FIELDCODE ) ,
    			[MAX_HARVEST_END_DATE] = MAX(fm.HARVEST_END_DATE) OVER ( PARTITION BY FIELDCODE ) ,
                   FROM     FM_BLOCK bl ,
                            FM_FIELD_CATEGORY cat ,
                            FM_FIELDMASTER_DETAIL fm
                   WHERE    fm.BLOCK_CODE = bl.BLOCK_CODE
                            AND fm.DPTCOD = bl.DPTCOD
                            AND fm.CATEGORY_CODE = cat.CATEGORY_CODE
                            AND fm.FIELDCODE = @FIELDCODE
                 )
        SELECT  D.[Coloque Todos os campos que c precisa] ,
                [Data a ser mostrada] =IIF(Dados.HARVEST_END_DATE IS NULL ,Dados.MAX_PLANTATION_DATE,Dados.MAX_HARVEST_END_DATE),
        FROM    Dados D


    Wesley Neves


    • Editado Wesley Neves sexta-feira, 2 de dezembro de 2016 11:40 sql
    • Marcado como Resposta JosefoSad segunda-feira, 5 de dezembro de 2016 14:32
    sexta-feira, 2 de dezembro de 2016 11:40
  • Bom dia,

    Devido a falta de interação do autor dessa pergunta,

    essa thread está sendo fechada. Caso o problema ainda

    esteja ocorrendo, favor abrir uma nova thread.

    Atenciosamente,


    Robson William Silva

    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.

    segunda-feira, 5 de dezembro de 2016 11:32