j'ai une table appelée tblAssetsInUse avec la structure suivante:SQL Trouver la date la plus récente de 2 colonnes, et d'identifier quelle colonne il était
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
et j'ai un SP qui reçoit un code d'actif numérisé puis soit Insère ou Mises à jour de la table pour les actifs en cours de vérification Out ou In respectivement. Comme vous pouvez le voir, datCheckedIn peut être Null, ce qui permet de déterminer quels actifs sont actuellement utilisés. Cette procédure fonctionne parfaitement. Je souhaite être en mesure de déterminer quel était le dernier actif à numériser et également quelle était la dernière opération à la table (c.-à-d. Entrée ou Sortie). J'ai un code SQL qui trouve la ligne avec la date la plus récente (indépendamment de la colonne) et je l'utilise ensuite pour rejoindre une vue distincte des actifs, qui fonctionne également. Je dois juste être en mesure de travailler si la date la plus récente était dans la colonne Checked Out ou Checked In en quelque sorte.
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
Y a-t-il une valeur littérale de quelque sorte que je puisse ajouter afin de marquer une valeur de bit dans les résultats peut-être?
Merci pour votre aide,
Paul Reynolds
Nice! Je pense que je vais faire cette optimisation. Cela ressemble à une très bonne idée. Ensuite, je serais en mesure de vérifier simplement l'opération pour déterminer laquelle était dans le code. Je vous remercie! –