J'ai parcouru ce site et google en général en essayant de trouver une solution à mon problème, mais tout ce que j'ai l'air de rencontrer est une erreur dans ma requête.MS Access - Delta (basculer entre x) entre la ligne actuelle et la ligne précédente
J'ai une table appelée Levé avec les champs Hole, Depth, Az, Dip.
Hole Depth Az Dip
---------------------------
AB1 0 170 -77
AB1 150 166 -76.5
AB1 200 160 -75
AD1 0 350 -88
AD1 65 344 -87.6
AD1 89 340 -85.4
AB2 0 152 -66
AB2 135 150 -63.2
je besoin d'une requête qui va trouver le changement de az sur la profondeur (entre deux lignes) et le changement de plongeon de la profondeur (entre deux lignes), mais seulement pour les trous qui commencent par « AB ». Ainsi, le résultat final devrait ressembler à ceci (avec une seule valeur au lieu de la formule):
Hole Depth DeltaAz DeltaDip
-------------------------------------------
AB1 150 (170-166)/150 (-77--76.5)/150
AB1 200 (166-160)/50 (-76.5--75)/50
AB2 135 (152-150)/135 (-66--63.2)/135
J'ai essayé un tas de différentes requêtes possibles que je trouve ici, mais rien n'a vraiment fonctionné. Le plus proche que j'ai eu était avec le code simple ci-dessous que j'utilisais pour tester la première étape (obtenir la différence entre deux rangées). Cependant, quand il a couru, je verrais les résultats et un message d'erreur Only one record can be returned by this subquery
. Quand j'ai cliqué OK sur l'erreur, tous mes résultats ont disparu.
SELECT Hole, Depth, [Az] - (
SELECT TOP 1 Az
FROM Survey AS S
WHERE Survey.Hole = S.Hole AND S.Az < Survey.Az
ORDER BY S.Az DESC
) AS Diff
FROM Survey
WHERE (
SELECT TOP 1 Az
FROM Survey AS S
WHERE Survey.Hole = S.Hole AND S.Az < Survey.Az
)
IS NOT NULL AND Hole LIKE 'AB*'
ORDER BY Survey.Hole, Depth, Survey.Az
;
Est-ce que quelqu'un a une solution pour m'aider? J'utilise MS Access 2013.
Y at-il toujours 3 enregistrements par trou, ou est-il une quantité variable? – Aron
C'est un montant variable. C'est en fait plus comme 20-30 enregistrements par trou. –