0

このようなクエリがありますが、機能しません。CASE EXPRESSION を使用した IN キーワードの何が問題になっていますか?

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 を使用していますが、これはエラー メッセージです。

キーワード「in」付近の構文が正しくありません。

4

2 に答える 2

4

構文が間違っています。次のようになります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;
于 2011-02-06T16:25:55.123 に答える
-1

代わりに結合を使用することを検討してください。

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;
于 2011-02-06T17:36:41.920 に答える