Использование ключевого слова [IN] с выражением регистра в выражении SQL - PullRequest
0 голосов
/ 06 февраля 2011

У меня такой запрос, но он не работает, что не так с ключевым словом IN с CASE EXPRESSION?

Select State = case c.addressId
  when in('2552','2478','2526') then 'IN' 
  when in ('9999') then 'OUT'
  else 'UNKNOWN'
  end,
  name, time
from x;

Я использую SQL Server 2008, и это сообщение об ошибке:

Неверный синтаксис рядом с ключевым словом 'В'.

Ответы [ 2 ]

4 голосов
/ 06 февраля 2011

У вас неправильный синтаксис.Это должно быть CASE WHEN [COLUMN] in (...):

Select 
  case when c.addressId in('2552','2478','2526') then 'IN' 
  when c.addressId in ('9999') then 'OUT'
  else 'UNKNOWN'
  end as State,
  name, time
from contact c;
0 голосов
/ 06 февраля 2011

Попробуйте вместо этого использовать объединение.

SELECT ISNULL(a.[State], 'UNKNOWN') [State]
    , c.[Name]
    , c.[Time]
FROM [contact] c
LEFT OUTER JOIN
(
    SELECT 2552 AddressId, 'IN' [State]
    UNION ALL SELECT 2478, 'IN'
    UNION ALL SELECT 2526, 'IN'
    UNION ALL SELECT 9999, 'OUT'
) [address] a ON a.AddressId = c.AddressId;
...