I have a table called tblAssetsInUse with the following structure:
intPK intAssetID datCheckedOut datCheckedIn
1 450 1/5/2009 10/5/2009
2 300 2/5/2009 <NULL>
3 200 2/5/2009 <NULL>
4 450 12/5/2009 5/7/2009
and I have a SP that receives a scanned Asset ID then either Inserts, or Updates to the table for assets being checked Out or In respectively. As you can see datCheckedIn may be Null which is used to work out which assets are currently in use. This procedure works perfectly. I wish to be able to determine what the last asset to be scanned was and also what the last operation to the table was (i.e. Check In or Out). I have some SQL code which finds the row with the most recent date (regardless of which column) and I then use this to join to a separate Assets View, which also works. I just need to be able to work out if the most recent date was in the Checked Out or Checked In column somehow.
SELECT TOP (1) allDates.intPK, MAX(allDates.datLastAction) AS datLastScan, dbo.viwAssets.strFriendlyName, tblAssetsInUse_join.intAssetID
FROM (SELECT intPK, MAX(datCheckedOut) AS datLastAction
FROM dbo.tblAssetsInUse AS tblAssetsInUse_out
GROUP BY intPK
UNION ALL
SELECT intPK, MAX(datCheckedIn) AS datLastAction
FROM dbo.tblAssetsInUse AS tblAssetsInUse_in
GROUP BY intPK) AS allDates
INNER JOIN
dbo.tblAssetsInUse AS tblAssetsInUse_join ON allDates.intPK = tblAssetsInUse_join.intPK
INNER JOIN
dbo.viwAssets ON tblAssetsInUse_join.intAssetID = dbo.viwAssets.intPK
GROUP BY allDates.intPK, dbo.viwAssets.strFriendlyName, tblAssetsInUse_join.intAssetID
ORDER BY datLastScan DESC
Is there a literal value of some kind I can add in so that it flags a bit value in the results perhaps?
Thanks for your help,
Paul Reynolds