【发布时间】:2019-04-01 23:01:33
【问题描述】:
每个声明可以有多个声明人。
如果这些声明中至少有一个拥有ClaimantStatus = 0,则认为声明为'Open'
所以我需要检索关于 Claim Level(不是 Claimants)的数据并创建列 ClaimStatus 来指示 Claim 是 Open 还是 Closed。
对于每个ClaimID,我需要检查是否至少有一个索赔人有ClaimantStatus = 0(打开),如果这是真的,那么列ClaimStatus应该是='Open',否则应该是=@987654332 @
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
正确答案应该是这样的:
【问题讨论】:
标签: sql sql-server tsql sql-server-2012