我一直都在搜索这个网站和谷歌一般都试图找到我的问题的解决方案,但我似乎遇到的只是我的查询中的错误。
我有一张名为Survey的表,其中包括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
我需要一个查询,它可以找到az深度(两行之间)的变化和深度(两行之间)的变化,但仅适用于以'AB'开头的孔。因此,最终输出应该看起来像这样(使用单个值而不是公式):
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
我已经尝试了一些我在这里找到的不同可能的查询,但没有真正有用的。我得到的最接近的是下面的简单代码,我用来测试第一步(获得两行之间的差异)。但是,当它运行时,我会看到结果和错误消息Only one record can be returned by this subquery
。当我点击错误时,我的所有结果都消失了。
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
;
有没有人有解决方案来帮助我?我正在使用MS Access 2013。
答案 0 :(得分:0)
:编辑:显然我没有研究理解,而且row_number()在MS访问中不可用,并且没有任何好的选择。
我并非100%确定这完全你需要什么,我相信它可以改进,但它应该让你朝着正确的方向前进。
您收到的错误消息是因为您的子查询返回了多条记录 - 即使您已指定&#34; top 1&#34;,我认为顶级条款未经处理直到返回结果,并且当子查询返回多个记录时,它才会出错。您可以使用row_number()离散地返回一条记录(这是我在下面所做的)。
在线试用http://rextester.com/RBQ22368
tf.verify_tensor_all_finite(..)