Thursday, 7 August 2008

TSQL: CASE statements example

select top 500 
a.SarID, 
a.Createdate as CreatedDate, 
a.ApprovedDate, 
a.CompletedDate,
CASE a.status 
WHEN 'C' THEN 'COMPLETED'
WHEN 'R' THEN 'REJECTED'
WHEN 'A' THEN 'APPROVED'
WHEN 'L' THEN 'LODGED'
WHEN 'X' THEN 'X'
WHEN 'P' THEN 'P'
ELSE 'Unknown'
END as RequestStatus, 
(select fname + ' ' + sname from intranetwarehouse..staffdetails where id = a.personid) as LodgeFor, 
a.createdby as LodgeByUsername,
a.approvedby as ApprovedByUsername,
(select fname + ' ' + sname from intranetwarehouse..staffdetails where id = a.approverid) as ApproverName,
e.name as SystemName,
CASE e.status 
WHEN 'I' THEN 'Inactive'
WHEN 'A' THEN 'Active'
ELSE 'Unknown'
END as isSystemActive,
d.name as ApplicationName,
CASE d.status 
WHEN 'I' THEN 'Inactive'
WHEN 'A' THEN 'Active'
ELSE 'Unknown'
END as isApplicationActive,
c.name as OptionName,
CASE c.status 
WHEN 'I' THEN 'Inactive'
WHEN 'A' THEN 'Active'
ELSE 'Unknown'
END as isOptionActive,
CASE b.status 
WHEN 'P' THEN 'PENDING'
WHEN 'A' THEN 'APPROVED'
WHEN 'R' THEN 'REJECTED'
WHEN 'L' THEN 'LODGED'
ELSE 'Unknown'
END as OptionApprovalStatus,
a.Comment
from ittservice..sar as a, ittservice..optionaccessrequests as b, ittservice..options as c, ittservice..applications as d, ittservice..systems as e
where a.sarid = b.sarid
and b.optionid = c.optionid
and c.applicationid = d.applicationid
and d.systemid = e.systemid
and year(a.createdate) = '2008'
order by a.sarid

No comments: