Как я могу переписать это утверждение? - PullRequest
0 голосов
/ 19 декабря 2009

Я объявил переменную @ 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

Я не хочу использовать локальную переменную @date в операторе case, но хочу получить тот же эффект. Я попробовал:

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

но получите ошибку. Есть идеи избавиться от этого?

Ответы [ 2 ]

1 голос
/ 19 декабря 2009

ОК, во-первых, вам нужно использовать

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 
0 голосов
/ 19 декабря 2009
CASE 
  WHEN MAX(DateValue)= isnull(dt, '31/12/2009') 
  ELSE CONVERT(varchar(10), CONVERT(datetime, MAX(DateValue)), 103) 
END AS newdt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...