SQL Server 2008 R2を使用していますが、適用、承認、拒否、またはキャンセルのいずれかの状態を残してアプリケーションステータスを表示したいとします。SQL Serverの承認ステータスを残す
すべての場合には、他の葉
のように、承認=、ステータスを承認残すが、いくつかは、いくつかは、ステータス=部分的な拒否、承認したままの状態例えばミックスが存在する場合。
私はコードを書いたが、複雑であると感じていますが、1つのクエリで取得できますか?
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