您可以使用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