您可以使用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 DEMO
你可以尝试使用情况下,当 – Miller