Average Days Held By Collection

Average Days Held By Collection

This query offers a look at the average number of days items within given collections are held.

SELECT
    td.numValue AS 'HoldRequestID',
    MAX(th.TransactionDate) AS 'Held',
    col.Name 
INTO
    #tmpHeldDate 
FROM
    PolarisTransactions.Polaris.TransactionHeaders th (NOLOCK) 
JOIN
    PolarisTransactions.Polaris.TransactionDetails td (NOLOCK) 
ON
    (td.TransactionID = th.TransactionID) AND (td.TransactionSubTypeID = '233') --HoldRequestID
JOIN
    PolarisTransactions.Polaris.TransactionDetails tdColl (NOLOCK)  ON (tdColl.TransactionID = th.TransactionID) AND (tdColl.TransactionSubTypeID = '61') --CollectionID
JOIN
    Polaris.Polaris.Collections col with (NOLOCK) 
ON
    tdColl.numValue = CollectionID 
WHERE
    th.TransactionTypeID = '6006' --hold held
AND
    col.CollectionID IN (SELECT CollectionID FROM Polaris.Polaris.Collections WITH (NOLOCK))
GROUP BY
    td.numValue,
    col.Name

SELECT
    td.numValue AS 'HoldRequestID',
    th.TransactionDate AS 'Created'
INTO
    #tmpCreatedDate 
FROM
    PolarisTransactions.Polaris.TransactionHeaders th (NOLOCK) 
JOIN
    PolarisTransactions.Polaris.TransactionDetails td (NOLOCK) ON (td.TransactionID = th.TransactionID) AND (td.TransactionSubTypeID = '233') --HoldRequestID
WHERE
    th.TransactionTypeID = '6005' --hold created
AND
    th.TransactionDate BETWEEN '2021-09-01 00:00:00.000' AND '2022-05-31 23:59:59.999'

SELECT
    thd.Name AS 'Description', AVG(datediff(day,tfd.Created,thd.Held)) AS 'Days held'
FROM
    #tmpHeldDate thd with (NOLOCK) 
JOIN
    #tmpCreatedDate tfd with (NOLOCK) ON thd.HoldRequestID = tfd.HoldRequestID
GROUP BY
    thd.Name
ORDER BY
    thd.Name

--Tidy up
DROP TABLE #tmpHeldDate 
DROP TABLE #tmpCreatedDate