none
casa com Data null RRS feed

  • Pergunta

  • SELECT O.IDOBJOF AS 'Objeto',
    M.MODELO         AS 'Modelo',
    S.DESCRICAO      AS 'Sub_Modelo',
    O.ANOFABR        AS 'Ano_fabricação',
    CASE WHEN O.ESTADOCONSERVACAO  = 'N'  THEN 'Novo'
         WHEN O.ESTADOCONSERVACAO  = 'U'  THEN 'Usado'
         WHEN O.ESTADOCONSERVACAO  = 'R'  THEN 'Reformado'
         WHEN O.ESTADOCONSERVACAO  = 'D'  THEN 'Danificado'
         WHEN O.ESTADOCONSERVACAO  = 'R'  THEN 'Reformado'

    END 'Est_Conservação',
    F1.DESCRICAO,
    P.DESCRICAO,
    T.DSCMOTIVO,
    A.DATAENTRADA,
    A.DATASAIDA


     FROM OFOBJOFICINA         AS  O   (NOLOCK)
    INNER JOIN OFMODELO        AS  M   (NOLOCK) ON  M.IDTIPOOBJ  = O.IDTIPOOBJ AND M.CODMODELO = O.CODMODELO
    INNER JOIN OFSUBMODELO     AS  S   (NOLOCK) ON O.IDTIPOOBJ   = M.IDTIPOOBJ AND S.CODMODELO = O.CODMODELO
    AND S.CODSUBMODELO = O.CODSUBMODELO
    INNER JOIN OFSTATUSEQP     AS  F1  (NOLOCK) ON F1.CODCOLIGADA = O.CODCOLIGADA AND F1.CODSTATUS = O.STATUS
    INNER JOIN OFHISTOBJFILHO  AS  A   (NOLOCK) ON A.CODCOLIGADA  = O.CODCOLIGADA AND A.IDOBJOF = O.IDOBJOF
    INNER JOIN OFPOSICAOFILHO   AS P ON P.CODPOSICAOFILHO = A.CODPOSICAOFILHO
    LEFT JOIN OFMOTIVORETIRADAOBJFILHO AS T ON T.CODMOTIVORET = A.CODMOTIVORET
    WHERE O.IDTIPOOBJ = '14'

    AND O.STATUS = '8'
    ORDER BY O.IDOBJOF

    Resultado

    A - B - C   DATAENTRADA - DATASAIDA

                   2007-10-27 08:00:00.000    NULL
                   2011-01-12 08:00:00.000    2012-02-27 08:00:00.000

    Resultado esperado

    quanto o campo DATASAIDA tiver valor tem que se chamar Desagregado e quanto for null Agregado

    A - B - C   DATAENTRADA - DATASAIDA                                                       Situacao

                   2007-10-27 08:00:00.000    NULL                                              Agregado
                   2011-01-12 08:00:00.000    2012-02-27 08:00:00.000             Desagregado

    Obrigado pela ajuda

    quarta-feira, 21 de março de 2012 15:35

Respostas

  • Von, boa noite!

    Tenta utilizar um case. Segue exemplo:

    SELECT   O.IDOBJOF AS 'Objeto',
             M.MODELO         AS 'Modelo',
             S.DESCRICAO      AS 'Sub_Modelo',
             O.ANOFABR        AS 'Ano_fabricação',
             CASE WHEN O.ESTADOCONSERVACAO  = 'N'  THEN 'Novo' 
                WHEN O.ESTADOCONSERVACAO  = 'U'  THEN 'Usado' 
                WHEN O.ESTADOCONSERVACAO  = 'R'  THEN 'Reformado' 
                WHEN O.ESTADOCONSERVACAO  = 'D'  THEN 'Danificado' 
                WHEN O.ESTADOCONSERVACAO  = 'R'  THEN 'Reformado' 
             END 'Est_Conservação',
             F1.DESCRICAO,
             P.DESCRICAO,
             T.DSCMOTIVO,
             A.DATAENTRADA,
             A.DATASAIDA,
             -- Verificação da situação
             CASE WHEN A.DATASAIDA IS NULL THEN 'Agregado' ELSE 'Desagregado' END Situacao
     
     FROM OFOBJOFICINA         AS  O   (NOLOCK)
     INNER JOIN OFMODELO        AS  M   (NOLOCK) ON  M.IDTIPOOBJ  = O.IDTIPOOBJ AND M.CODMODELO = O.CODMODELO
     INNER JOIN OFSUBMODELO     AS  S   (NOLOCK) ON O.IDTIPOOBJ   = M.IDTIPOOBJ AND S.CODMODELO = O.CODMODELO
     AND S.CODSUBMODELO = O.CODSUBMODELO
     INNER JOIN OFSTATUSEQP     AS  F1  (NOLOCK) ON F1.CODCOLIGADA = O.CODCOLIGADA AND F1.CODSTATUS = O.STATUS
     INNER JOIN OFHISTOBJFILHO  AS  A   (NOLOCK) ON A.CODCOLIGADA  = O.CODCOLIGADA AND A.IDOBJOF = O.IDOBJOF
     INNER JOIN OFPOSICAOFILHO   AS P ON P.CODPOSICAOFILHO = A.CODPOSICAOFILHO
     LEFT JOIN OFMOTIVORETIRADAOBJFILHO AS T ON T.CODMOTIVORET = A.CODMOTIVORET
     WHERE O.IDTIPOOBJ = '14' 


    Espero que ajude! Luiz Phellipe

    quinta-feira, 22 de março de 2012 01:10

Todas as Respostas

  • Von, boa noite!

    Tenta utilizar um case. Segue exemplo:

    SELECT   O.IDOBJOF AS 'Objeto',
             M.MODELO         AS 'Modelo',
             S.DESCRICAO      AS 'Sub_Modelo',
             O.ANOFABR        AS 'Ano_fabricação',
             CASE WHEN O.ESTADOCONSERVACAO  = 'N'  THEN 'Novo' 
                WHEN O.ESTADOCONSERVACAO  = 'U'  THEN 'Usado' 
                WHEN O.ESTADOCONSERVACAO  = 'R'  THEN 'Reformado' 
                WHEN O.ESTADOCONSERVACAO  = 'D'  THEN 'Danificado' 
                WHEN O.ESTADOCONSERVACAO  = 'R'  THEN 'Reformado' 
             END 'Est_Conservação',
             F1.DESCRICAO,
             P.DESCRICAO,
             T.DSCMOTIVO,
             A.DATAENTRADA,
             A.DATASAIDA,
             -- Verificação da situação
             CASE WHEN A.DATASAIDA IS NULL THEN 'Agregado' ELSE 'Desagregado' END Situacao
     
     FROM OFOBJOFICINA         AS  O   (NOLOCK)
     INNER JOIN OFMODELO        AS  M   (NOLOCK) ON  M.IDTIPOOBJ  = O.IDTIPOOBJ AND M.CODMODELO = O.CODMODELO
     INNER JOIN OFSUBMODELO     AS  S   (NOLOCK) ON O.IDTIPOOBJ   = M.IDTIPOOBJ AND S.CODMODELO = O.CODMODELO
     AND S.CODSUBMODELO = O.CODSUBMODELO
     INNER JOIN OFSTATUSEQP     AS  F1  (NOLOCK) ON F1.CODCOLIGADA = O.CODCOLIGADA AND F1.CODSTATUS = O.STATUS
     INNER JOIN OFHISTOBJFILHO  AS  A   (NOLOCK) ON A.CODCOLIGADA  = O.CODCOLIGADA AND A.IDOBJOF = O.IDOBJOF
     INNER JOIN OFPOSICAOFILHO   AS P ON P.CODPOSICAOFILHO = A.CODPOSICAOFILHO
     LEFT JOIN OFMOTIVORETIRADAOBJFILHO AS T ON T.CODMOTIVORET = A.CODMOTIVORET
     WHERE O.IDTIPOOBJ = '14' 


    Espero que ajude! Luiz Phellipe

    quinta-feira, 22 de março de 2012 01:10
  • Parabens Luiz Muito Obrigado conseguimos resolver.
    quinta-feira, 22 de março de 2012 20:43