none
comparadação de data com status RRS feed

  • Pergunta

  •  

    tenho uma função no access que funciona blz, no sql server não estou conseguindo.

     

    [DtFim] Parametro informado pelo usuario

     

    IIf(Clientes.DtInicio<=[DtFim] And Clientes.DtFim>[DtFim],"Ativo","Cancelado") AS Status

     

    espero ajuda

     

    obrigado.

    sexta-feira, 18 de julho de 2008 13:30

Respostas

  • Carlos,

     

    No SQL Server você terá que utilizar o CASE ou IF, o IIF não é compatível com o SQL Server.

     

    Veja os exemplos:

     

    USE AdventureWorks;
    GO
    SELECT   ProductNumber, Category =
          CASE ProductLine
             WHEN 'R' THEN 'Road'
             WHEN 'M' THEN 'Mountain'
             WHEN 'T' THEN 'Touring'
             WHEN 'S' THEN 'Other sale items'
             ELSE 'Not for sale'
          END,
       Name
    FROM Production.Product
    ORDER BY ProductNumber;
    GO
    USE AdventureWorks;
    GO
    SELECT   ProductNumber, Name, 'Price Range' = 
          CASE 
             WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
             WHEN ListPrice < 50 THEN 'Under $50'
             WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
             WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
             ELSE 'Over $1000'
          END
    FROM Production.Product
    ORDER BY ProductNumber ;
    GO
     
    DECLARE @compareprice money, @cost money 
    EXECUTE Production.uspGetList '%Bikes%', 700, @compareprice OUT, @cost OUTPUT IF @cost <= @compareprice BEGIN PRINT 'These products can be purchased for less than $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.' END ELSE PRINT 'The prices for all products in this category exceed $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
    sexta-feira, 18 de julho de 2008 13:45
  • Carlos, tente isso:

     

    Code Snippet
    SELECT CASE WHEN Cliente.DtInicio <= [DtFim]
    And Cliente.DtFim > [DtFim] THEN 'Ativo' ELSE 'Cancelado'
    END AS Status FROM Tabela

     

     

     

    Para vc passar isso como parâmetro a consulta deverá ser colocada em uma stored procedure, ou então vc poderá fazer direto na aplicação.

     

    [ ]s.

    sexta-feira, 18 de julho de 2008 13:52

Todas as Respostas

  • Carlos,

     

    No SQL Server você terá que utilizar o CASE ou IF, o IIF não é compatível com o SQL Server.

     

    Veja os exemplos:

     

    USE AdventureWorks;
    GO
    SELECT   ProductNumber, Category =
          CASE ProductLine
             WHEN 'R' THEN 'Road'
             WHEN 'M' THEN 'Mountain'
             WHEN 'T' THEN 'Touring'
             WHEN 'S' THEN 'Other sale items'
             ELSE 'Not for sale'
          END,
       Name
    FROM Production.Product
    ORDER BY ProductNumber;
    GO
    USE AdventureWorks;
    GO
    SELECT   ProductNumber, Name, 'Price Range' = 
          CASE 
             WHEN ListPrice =  0 THEN 'Mfg item - not for resale'
             WHEN ListPrice < 50 THEN 'Under $50'
             WHEN ListPrice >= 50 and ListPrice < 250 THEN 'Under $250'
             WHEN ListPrice >= 250 and ListPrice < 1000 THEN 'Under $1000'
             ELSE 'Over $1000'
          END
    FROM Production.Product
    ORDER BY ProductNumber ;
    GO
     
    DECLARE @compareprice money, @cost money 
    EXECUTE Production.uspGetList '%Bikes%', 700, @compareprice OUT, @cost OUTPUT IF @cost <= @compareprice BEGIN PRINT 'These products can be purchased for less than $'+RTRIM(CAST(@compareprice AS varchar(20)))+'.' END ELSE PRINT 'The prices for all products in this category exceed $'+ RTRIM(CAST(@compareprice AS varchar(20)))+'.'
    sexta-feira, 18 de julho de 2008 13:45
  • Carlos, tente isso:

     

    Code Snippet
    SELECT CASE WHEN Cliente.DtInicio <= [DtFim]
    And Cliente.DtFim > [DtFim] THEN 'Ativo' ELSE 'Cancelado'
    END AS Status FROM Tabela

     

     

     

    Para vc passar isso como parâmetro a consulta deverá ser colocada em uma stored procedure, ou então vc poderá fazer direto na aplicação.

     

    [ ]s.

    sexta-feira, 18 de julho de 2008 13:52