none
Dúvida com a query para add uma nova coluna RRS feed

  • Pergunta

  • Olá pessoal,

    por favor, podem me ajudar com uma dúvida, estou montando uma query, que eu preciso de comprar a minha data de Garantia  com a data de atual, ou seja se a data de garantia for menor que a data atual o equipamento está fora de garantia.

    Ai preciso apresentar uma coluna ou lado informando "Em garantia" ou "Fora de garantia".

    SELECT
    	DT_venda AS 'Data de venda',
    	DT_garantia AS 'Data de garantia'
    FROM
            tab_equipamento
             Data venda                Data Garantia        Status
    22/02/2011 22/02/2012        Fora de Garantia
    21/12/2012 21/12/2013        Em Garantia
    04/03/2011 03/03/2012
    18/05/2011 17/05/2012
    17/11/2011 11/11/2012
    17/10/2011 16/10/2012
    12/11/2011 06/11/2012
    03/02/2011 03/02/2012
    25/01/2011 25/01/2012
    20/01/2011 20/01/2012
    28/08/2010 21/11/2011

    por favor, alguém pode me ajudar, desde já muito obrigado


    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 30 de outubro de 2013 13:09

Respostas

Todas as Respostas

  • deste jeito:

    SELECT DT_venda AS 'Data de venda', DT_garantia AS 'Data de garantia',

    Case when DT_garantia>=GetDate() then 'Fora de garantia' else 'Em garantia' end as Status FROM tab_equipament


    William John Adam Trindade
    Analyste-programmeur
    ----------------------------------------------------------

    quarta-feira, 30 de outubro de 2013 13:28
  • Bom dia,

    Experimente dessa forma:

    SELECT
        DT_venda AS 'Data de venda',
        DT_garantia AS 'Data de garantia',
        case when DATEDIFF(DAY, GETDATE(), DT_garantia) < 0 
            then 'Fora de garantia' else 'Em garantia'
        end AS 'Status'
    FROM
        tab_equipamento

    Espero que ajude.


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

    quarta-feira, 30 de outubro de 2013 13:30
  • William, muito obrigado pela ajuda, funcionou perfeitamente :)



    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 30 de outubro de 2013 14:19
  • Gapemix a sua sugestão também funcionou perfeitamente.

    Por favor, pode me tirar uma dúvida, apenas para alinhar o aprendizado. rsrs

    O case, está funcionando da seguinte forma, "caso quando" a data seja menor que zero, "faça, fora de garantia", "Se não, Em garantia"

    Muito obrigado


    Wellinghton Pimentel Se esta sugestão for útil, por favor, classifique-a como útil. Se ela lhe ajudar a resolver o problema, por favor, marque-a como Resposta.

    quarta-feira, 30 de outubro de 2013 14:31
  • Wellinghton, no script que sugeri utilizei a função DateDiff para obter a diferença em dias entre a data atual (função GetDate()) e a data em que expira a garantia, então quando a diferença em dias é menor que zero é retornado 'Fora da garantia', senão é retornado 'Em garantia'. 

    Sugeri dessa forma porque imaginei (talvez erroneamente) que a coluna DT_garantia não possui a parte das horas e a função GetDate() retorna a data atual com as horas, então um equipamento poderia ser considerado fora da garantia por causa da parte das horas. Se bem que revendo a minha sugestão, e se for esse o caso mesmo, acho que seria melhor utilizar algum método para retirar a parte das horas da GetDate() e fazer a comparação direta em vez de utilizar a DateDiff:

        case when DT_garantia < cast(GETDATE() as date)

    Abs


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

    quarta-feira, 30 de outubro de 2013 16:35