0

I want to get count total numbers of claims with the ID.

SELECT   
    InsuranceId,Name,
    COUNT(claimid) AS TotalPendingClaims
FROM 
    Claim 
GROUP BY
    InsuranceId

This is my query, but I want to get claimid also which is counted in the above query. I need column claimIds=(1,2,4,5)

Expected result:

InsuranceId  Name TotalPendingClaims  ClaimIds
-----------------------------------------------
1            Med     2                  23,24
2            TX      1                   55
3            TED     3                  44,45,46
marc_s
  • 732,580
  • 175
  • 1,330
  • 1,459
Ali Imran
  • 646
  • 1
  • 9
  • 26

4 Answers4

1

You may try this

    SELECT   
        InsuranceId
        , count(claimid) as TotalPendingClaims
        , claimids = STUFF((SELECT ',' + cast(claimid as varchar(255)) FROM Claim B WHERE B.InsuranceId = A.InsuranceId FOR XML PATH('')) , 1 , 1 , '' )
            From Claim A
            Group by InsuranceId
Bùi Đức Khánh
  • 3,975
  • 6
  • 27
  • 43
0

You can make use of the following query in which stuff concatenates the claim ID's and count can be calculated seperately

SELECT DISTINCT t2.InsuranceId ,
    STUFF((Select ','+ CONVERT(VARCHAR(5), claimid) FROM #TEMP_INSURANCE T1 
WHERE T1.InsuranceId=T2.InsuranceId FOR XML PATH('')),1,1,'')  AS ClaimID,
    Cnt
FROM #TEMP_INSURANCE t2 INNER JOIN
    (SELECT InsuranceId,COUNT(claimid) Cnt FROM #TEMP_INSURANCE GROUP BY InsuranceId)T ON t.InsuranceId = t2.InsuranceId
Aswani Madhavan
  • 816
  • 6
  • 19
0

Answer of my Problem is :

--changes addded by Ali Imran 12/13/2017 get also the claim number

claimid=stuff
(
 ( select distinct','+cast(c1.claimid as varchar(max))
  from #Claim c1 where
  c1.insuranceid=ins.insuranceid

  for xml path('')
  ),1,1,''
),

--Changes ended by Ali Imran
Ali Imran
  • 646
  • 1
  • 9
  • 26
0

Try this query

SELECT InsuranceId, name, COUNT(*) TotalPendingClaims, 
ClaimIds = STUFF((SELECT ', ' + CONVERT(varchar, claimid)
           FROM  dbo.Claim c2
           WHERE c1.InsuranceId = c2.InsuranceId AND c1.name = c2.name
           FOR XML PATH('')), 1, 2, '')
FROM claim c1
GROUP BY InsuranceId, name
ORDER BY InsuranceId, name
Krupa
  • 457
  • 3
  • 14