none
Case when Cte RRS feed

  • Pergunta

  • pessoal boa tarde, um feliz ano novo pra todos. 

    estou com uma dificuldade aqui, ja tenho uma consulta funcionando, mas preciso fazer uma alteração pra um novo relatorio.

    quando NE.descTreina = 'ART. PERIGOSOS'  for diferente de NULL preciso que :

     max(case when NE.descTreina = 'N/A' then  DATEADD(dd, NE.tempo,SE.Dtfinal) end )na ,
     max(case when NE.descTreina = 'N/A' then  DATEADD(dd, NE.tempo,N.DatFinal) end )solo,

    sejam preenchidos com a mesma data de Art.perigosos. Alguem consegue me ajudar. 

    SELECT  N.id, N.NomePiloto, N.Modelonome, stuff ((SELECT ', ' + T.descTreina  
    from Tbl_NRTespecifico as T  where T.id_nrt = N.id order by T.descTreina  for xml path(''), TYPE).value('.', 'varchar(max)'), 1, 2, '')
     as cursos,   
     
    
     max(  case when NE.descTreina = 'AVSEC' then DATEADD(dd, NE.tempo,N.DatInicial) end) av,
     max(case when NE.descTreina = 'SGSO' then  DATEADD(dd, NE.tempo,N.DatInicial) end )sg,
    
     max(case when NE.descTreina = 'N/A' then  DATEADD(dd, NE.tempo,SE.Dtfinal) end )na ,
     max(case when NE.descTreina = 'N/A' then  DATEADD(dd, NE.tempo,N.DatFinal) end )solo,
     max(case when NE.descTreina = 'ART. PERIGOSOS' then  DATEADD(dd, NE.tempo,N.DatInicial) end )art,
     
    
     max(case when NE.descTreina = 'CRM' then  DATEADD(dd, NE.tempo,N.DatInicial) end )cmri ,
     max(case when NE.descTreina = 'CARG. EXTERNA' then  DATEADD(dd, NE.tempo,N.DatInicial) end) care,
     max(case when NE.descTreina = 'TRANSP. ENFERMOS' then  DATEADD(dd, NE.tempo,N.DatInicial) end) traenf
      
     from Tbl_NRT as N left join Tbl_NRTespecifico as NE on NE.id_nrt = N.id  
     left join Tbl_SAE as SE on SE.id_NRT = N.Id where N.Ativo ='A' and N.Decricao = 'piloto'
     group by N.id, N.NomePiloto, N.Modelonome  order by N.NomePiloto asc

    desde ja agradeço.

    Att, Ricardo.

    quinta-feira, 31 de dezembro de 2020 20:10

Todas as Respostas

  • Boa tarde,

    Não sei se entendi corretamente mas experimente mais ou menos dessa forma:

    with CTE_Orig as
    (
        -- consulta original
    )
    
    select
        id, 
        NomePiloto, 
        Modelonome, 
        cursos,   
        av,
        sg,
        coalesce(art, na) as na,
        coalesce(art, solo) as solo,
        art,
        cmri,
        care,
        traenf
    from CTE_Orig

    Espero que ajude


    Assinatura: http://www.imoveisemexposicao.com.br

    sexta-feira, 1 de janeiro de 2021 19:21
  • Boa noite gapimex,  um feliz ano novo, obrigado pela ajuda. testei na minha maq e aparente esta trazendo os resultado de forma correta. dou um feedback melhor na segunda que coloco em produção. 

    mais uma vez obrigado. 

    abs ricardo. 

    sexta-feira, 1 de janeiro de 2021 23:48
  • Wsti,

    Você consegui testar? 

    Gostaria somente de ressaltar o uso do Left Join dentro da sua query original, talvez o resultado que possa ser retornado apresente colunas com o indicador Null, isso representa que a junção atendeu somente os requisitos da tabela declarada a esquerda do Join.

    Se por acaso você não deseja que isso ocorra troca o Left pelo Inner.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    quarta-feira, 6 de janeiro de 2021 11:22