我正在使用SQL Server 2008 R2,我想顯示可以申請,批准,拒絕或取消的申請狀態。在SQL Server中允許審批狀態
如果全部離開批准則狀態=批准,像其他葉子
但如果有混合狀態e.g一些離開批准,那麼一些拒收狀態=部分。
我寫了代碼,但我覺得它很複雜,我可以在一個單一的查詢中得到它嗎?
create table #t
(
employeeID int,
LeaveCode nvarchar(10),
status nvarchar(50)
)
insert into #t
values(1, 'PL', 'Approve'), (1, 'PL', 'Reject'), (1, 'PL', 'Approve')
;with ct1 as
(
select status, count(status) Cnt
from #t
group by status
),
counters as
(
select count(*) as TotalLeave
from #t
)
select top(1)
CASE
WHEN C1.Cnt = C2.TotalLeave
THEN C1.status
ELSE 'Partial'
END [status]
from
ct1 C1
cross join
counters C2
drop table #t