代码之家  ›  专栏  ›  技术社区  ›  priyanka.sarkar

我怎样才能重写这句话?

  •  0
  • priyanka.sarkar  · 技术社区  · 16 年前

    我已经声明了一个变量@date

    SELECT @date = CASE 
          WHEN MAX(dt) IS NULL THEN '31/12/2009' 
          ELSE MAX(dt) + 1 
      END 
      FROM mytab
    

    CASE 
      WHEN MAX(DateValue)= @date THEN NULL 
      ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
    END AS newdt
    

    我不想在case语句中使用@date局部变量,但希望得到相同的效果。我试过:

    CASE 
      WHEN MAX(DateValue)= @isnull(dt, '31/12/2009') 
      ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
    END AS newdt 
    

    但是收到一个错误。有没有摆脱这个的想法?

    2 回复  |  直到 16 年前
        1
  •  1
  •   Adriaan Stander    16 年前

    好的,首先你需要使用

    ISNULL(dt, '31/12/2009')
    

    @

    其次,您需要提供一个更完整的查询供我们检查。另外,请指定接收到的错误。

    CASE 
       WHEN MAX(DateValue)= (SELECT CASE WHEN MAX(dt) IS NULL THEN '31/12/2009' ELSE MAX(dt) + 1 END FROM mytab)
       ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
    END AS newdt 
    
        2
  •  0
  •   eric.christensen    16 年前
    CASE 
      WHEN MAX(DateValue)= isnull(dt, '31/12/2009') 
      ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
    END AS newdt