I am a novice to SQL and seeking a little direction. The below query correctly identifies the number of rows (count(*)) in the combined (Union) query. However, in addition to the number (count), I need to also display the Name (cn1.FullName) as there are multiple users. I have looked high and low for a similar example without success. I am not able to determine how to list the cn1.FullName within the query. I'm seeking a layout as follows -
[Open Notes] | [User]
13 | User1
21 | User2
32 | User3
and sorted by [Open Notes] asc
Any assistance would be greatly appreciated.
Select COUNT(*) as [Open Notes] from
(
SELECT distinct(pe.EncounterID) AS [Encounter ID],
cn1.FullName AS [Name],
convert(varchar, pe.EncounterDate, 101) AS [Encounter Date],
cn2.FullName AS [P Name],
p.AccountNumber AS [P ID],
convert(varchar, pe.EncounterDate, 22) AS [Note Date],
pv.memo AS [Note Memo],
es.StateName AS [Note Status]
FROM [exP].[dbo].[Encounter] pe
INNER JOIN [exP].[dbo].[Visit] pv
ON pv.PEncounterID = pe.PEncounterID
INNER JOIN [exP].[dbo].[UserProfile] up
ON up.UserProfileID = pe.phID
INNER JOIN [exP].[dbo].[ContactName] cn1
ON cn1.ContactInfoID = up.ContactInfoID
INNER JOIN [exP].[dbo].[Event] e
ON e.EventID = pe.EventID
INNER JOIN [exP].[dbo].[EventStates] es
ON es.EventStateID = e.State
LEFT OUTER JOIN [exP].[dbo].[P] p
ON p.PID = pe.PID
LEFT OUTER JOIN [exP].[dbo].[ContactName] cn2
ON cn2.ContactInfoID = p.ContactInfoID
WHERE (up.Type = 200 OR up.Type = 205 OR up.Type = 206)
AND pe.EncounterDate >= '2022-06-01'
AND pe.EncounterDate < getdate()
AND pe.BillingState = 0
AND e.State <> 3
AND e.State <> 4
AND pv.VisitID <> 263
AND pv.VisitID <> 265
AND pv.VisitID <> 549
AND pv.VisitID <> 29564
AND pv.ReasonID <> 1143
AND pv.ReasonID <> 70390
AND pv.ReasonID <> 70426
AND pv.ReasonID <> 65756
AND pv.ReasonID <> 65767
AND pv.Memo NOT LIKE '%ss only%'
AND pv.Memo NOT LIKE '%s only%'
AND pe.TypeID <> 57
AND pe.TypeID <> 60
AND pe.TypeID <> 61
AND pe.TypeID <> 62
AND pe.TypeID <> 66
AND pe.TypeID <> 67
AND pe.TypeID <> 68
AND pe.TypeID <> 78
AND pe.TypeID <> 79
UNION
SELECT distinct(pe.PEncounterID) AS [Encounter ID],
cn1.FullName AS [Provider Name],
convert(varchar, pe.EncounterDate, 101) AS [Encounter Date],
cn2.FullName AS [P Name],
p.AccountNumber AS [P ID],
convert(varchar, pe.EncounterDate, 22) AS [Note Date],
pv.memo AS [Note Memo],
es.StateName AS [Note Status]
FROM [exP].[dbo].[PEncounter] pe
INNER JOIN [exP].[dbo].[PVisit] pv
ON pv.PEncounterID = pe.PEncounterID
INNER JOIN [exP].[dbo].[UserProfile] up
ON up.UserProfileID = pe.phID
INNER JOIN [exP].[dbo].[ContactName] cn1
ON cn1.ContactInfoID = up.ContactInfoID
LEFT JOIN [exP].[dbo].[Event] e
ON e.PID = pe.PID
INNER JOIN [exP].[dbo].[EventStates] es
ON es.EventStateID = e.State
LEFT OUTER JOIN [exP].[dbo].[P] p
ON p.PID = pe.PID
LEFT OUTER JOIN [exP].[dbo].[ContactName] cn2
ON cn2.ContactInfoID = p.ContactInfoID
WHERE (up.Type = 200 OR up.Type = 205 OR up.Type = 206)
AND pe.EncounterDate >= '2022-06-01'
AND pe.EncounterDate < getdate()
AND pe.EventID is null
AND e.State <> 3
AND e.State <> 4
AND pv.VisitID <> 263
AND pv.VisitID <> 265
AND pv.VisitID <> 549
AND pv.VisitID <> 29564
AND pv.ReasonID <> 1143
AND pv.ReasonID <> 70390
AND pv.ReasonID <> 70426
AND pv.ReasonID <> 65756
AND pv.ReasonID <> 65767
AND pv.Memo NOT LIKE '%ss only%'
AND pv.Memo NOT LIKE '%s only%'
AND pe.TypeID <> 57
AND pe.TypeID <> 60
AND pe.TypeID <> 61
AND pe.TypeID <> 62
AND pe.TypeID <> 66
AND pe.TypeID <> 67
AND pe.TypeID <> 68
AND pe.TypeID <> 78
AND pe.TypeID <> 79
)
as ct
Thanks in advance,
Kcarey
CodePudding user response:
Try:
Select [Name], COUNT(*) as [Open Notes] from
( union'd queries)
group by [Name]