我有一个名为 tblAssetsInUse 的表,其结构如下:
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
并且我有一个 SP 接收扫描的资产 ID,然后分别插入或更新表中的资产以检出或检入。如您所见,datCheckedIn 可能为 Null,用于计算当前正在使用的资产。此过程完美运行。我希望能够确定要扫描的最后一个资产是什么,以及表的最后一个操作是什么(即签入或签出)。我有一些 SQL 代码可以找到具有最近日期的行(无论哪一列),然后我使用它来加入一个单独的资产视图,它也可以工作。我只需要能够以某种方式确定最近的日期是否在“签出”或“签入”列中。
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
是否有某种我可以添加的文字值,以便它在结果中标记一个位值?
谢谢你的帮助,
保罗雷诺兹