Patron Address Information Based On Fine Data

Patron Address Information Based On Fine Data

Another useful query for fine free proposals. This pulls patron barcode, total outstanding charges, patron code, patron branch, patron full name, patron address information, and primary email. We've used it for demographic data on patrons and their addresses to discover concentrations of patrons owing fines in a geographic location and see if any information can be derived from that.
```SQL SELECT DISTINCT p.Barcode AS [Patron Barcode], CAST(p.ChargesAmount AS DECIMAL (20,2)) AS [Outstanding Balance], pc.Description AS [Patron Code], o.name AS [Patron Branch], pr.PatronFullName AS [Patron Full Name], addr.StreetOne AS [Street One], addr.StreetTwo AS [Street Two], pos.City AS [City], pos.State AS [State], pos.PostalCode AS [ZIP Code], pr.EmailAddress AS [Email]

FROM
Polaris.Polaris.PatronAccount ac WITH (NOLOCK)

INNER JOIN
Polaris.Polaris.Patrons p WITH (NOLOCK) ON (p.PatronID = ac.PatronID)
INNER JOIN
Polaris.Polaris.PatronRegistration pr WITH (NOLOCK) ON (p.PatronID = pr.PatronID)
INNER JOIN
Polaris.Polaris.Organizations gov WITH (NOLOCK) ON (ac.OrganizationID = gov.OrganizationID)
INNER JOIN
Polaris.Polaris.organizations o WITH (NOLOCK) ON (p.OrganizationID = o.OrganizationID)
INNER JOIN
Polaris.Polaris.PatronCodes pc WITH (NOLOCK) ON (p.PatronCodeID = pc.PatronCodeID)
LEFT JOIN
Polaris.Polaris.PatronAddresses pa WITH (NOLOCK) ON (pr.PatronID = pa.PatronID AND pa.AddressTypeID = 2 )
LEFT JOIN
Polaris.Polaris.Addresses addr WITH (NOLOCK) ON (pa.AddressID = addr.AddressID)
LEFT JOIN
Polaris.Polaris.PostalCodes pos WITH (NOLOCK) ON (addr.PostalCodeID = pos.PostalCodeID)

WHERE – Adust OrgIDs as needed
ac.OrganizationID IN (1,2,3,4,5)
AND – Adjust charges amount as needed
p.ChargesAmount >= 20.00
AND
ac.TxnID IN (
SELECT
DISTINCT TxnID
FROM
Polaris.Polaris.PatronAccount WITH (NOLOCK)
WHERE
TxnCodeID IN (1)
AND
OutstandingAmount > 0
)

ORDER BY
[Patron Branch] ASC,
[Patron Full Name] ASC