У каждой Претензии может быть несколько Претендентов.
Претензия считается 'Open'
, если хотя бы один из этих заявителей имеет ClaimantStatus = 0
Поэтому мне нужно получить данные на уровне заявки (не на заявителях) и в столбце Создать ClaimStatus
, в котором указывается, является ли заявка Open
или Closed
.
Для каждого ClaimID
мне нужно проверить, есть ли хотя бы у одного Заявителя ClaimantStatus = 0
(открыто), и если это правда, тогда столбец ClaimStatus
должен быть = 'Open'
, в противном случае должен быть = 'Closed'
declare @ClaimsTable table (ClaimID varchar(20))
insert into @ClaimsTable values ('Claim1'),
('Claim2'),
('Claim3'),
('Claim4')
declare @ClaimantsTable table (ClaimID varchar(20), ClaimantName varchar(50), ClaimantStatus int)
insert into @ClaimantsTable values ('Claim1','Claimant1',1),
('Claim1','Claimant2',0),
('Claim1','Claimant3',1),
('Claim2','Claimant2',0),
('Claim3','Claimant1',1),
('Claim3','Claimant2',1),
('Claim3','Claimant3',1),
('Claim4','Claimant1',0),
('Claim4','Claimant2',0)
--select * from @ClaimantsTable
select ClaimID,
(select count (ClaimantName) from @ClaimantsTable ct where ct.ClaimID = c.ClaimID) as NumberOfClaimants,
--below statement does not work correctly
(select top 1 case when ClaimantStatus in (0) then 'Open' Else 'Closed' end as t from @ClaimantsTable ct where ct.ClaimID = c.ClaimID) as ClaimStatus
from @ClaimsTable c
Правильный ответ должен быть таким:
