を使用できますcase
が、実際には派生テーブルのアイデアが好きです。将来変更するのが簡単だからです。
select
R.*, C.Name as RequestStatusName
from Request as R
left outer join (values
(1, 'IN_PROGRESS'),
(2, 'CANCELED'),
(3, 'COMPLETED')
) as C(Id, Name) on C.Id = R.RequestStatusID
したがって、次のように、必要な数の列を追加できます。
select
R.*,
C.Name as RequestStatusName,
C.Description as RequestStatusDescription
from Request as R
left outer join (values
(1, 'IN_PROGRESS', 'In progress description'),
(2, 'CANCELED', 'Canceled description'),
(3, 'COMPLETED', 'Completed description')
) as C(Id, Name, Description) on C.Id = R.RequestStatusID
頻繁に参加する必要がある場合は、ビューを作成できます。
create view vw_RequestStatusNames
as
select C.Id, C.Name, C.Description
from (values
(1, 'IN_PROGRESS', 'In progress description'),
(2, 'CANCELED', 'Canceled description'),
(3, 'COMPLETED', 'Completed description')
) as C(Id, Name, Description)
結合で使用します。
select
R.*,
C.Name as RequestStatusName,
C.Description as RequestStatusDescription
from Request as R
left outer join vw_RequestStatusNames as C on C.Id = R.RequestStatusID
=> SQL FIDDLE デモ