Ms Access多行SQL计算

Ms Access多行SQL计算,sql,ms-access,Sql,Ms Access,我有以下疑问: SELECT InspectionID, Distance, Continuous, structural_grade FROM Conditions WHERE Continuous LIKE ("S%") OR Continuous LIKE ("F%") ORDER BY InspectionId ASC, Distance ASC 哪些产出: 262 60.80 S01 3 262 73.10 F01 3 262 82

我有以下疑问:

SELECT 
    InspectionID, Distance, Continuous, structural_grade  
FROM 
    Conditions
WHERE 
    Continuous LIKE ("S%") OR Continuous LIKE ("F%")
ORDER BY 
    InspectionId ASC, Distance ASC
哪些产出:

262 60.80   S01 3
262 73.10   F01 3
262 82.60   S02 2
262 140.30  F02 2
263 30.80   S01 2
263 46.60   F01 2
380 4.60    S01 3
380 8.50    F01 3
380 9.80    S02 4
380 28.20   F02 4
380 77.70   S03 4
380 97.70   F03 4
订购是正确的。然而,我被困在下一步该做什么

每个S都有一个匹配的F,其编号相同,例如S01、F01。我需要访问每个F的距离域,并减去它的S距离

例如,F01的距离为73.10,S01的距离为60.80,因此两者之间的距离为12.3。我需要对每一条记录都这样做,在S和F之后的数字可以非常高,但总是匹配的。例如S999-F999

使用Mid函数从连续字段中提取数字:MidS01,2.01。然后在加入F和S行时使用这些数字

SELECT a.continuous AS 'S Continuous',
a.distance AS 'S Distance',
b.continuous AS 'F Continuous',
b.distance AS 'F Distance',
abs(a.distance - b.distance) AS 'Difference'

FROM Conditions a

INNER JOIN Conditions b
ON a.InspectionID = b.InspectionID
AND substring(a.continuous,2,len(a.continuous)-1) = substring(b.continuous,2,len(b.continuous)-1)

WHERE a.Continuous LIKE 'S%'
AND b.Continuous LIKE 'F%'

ORDER BY a.InspectionId ASC, a.Distance ASC
使用Access 2010中的示例数据,以下查询提供了此结果集:

选择 f、 检查ID, f、 连续的, s、 连续的, f、 作为f_距离的距离, s、 距离作为s_距离, f、 距离-s.距离为f_减去s 从…起 条件为f 内连接 选择 检查ID, 不断的 距离 中间[连续],2位仅为数字\u 从条件 其中“S%” 作为s 在…上 f、 InspectionID=s.InspectionID 和Midf。[连续],2=仅s位数 式中f.连续的“f%” 按f.InspectionId ASC、f.Distance ASC订购; 我在最后的查询中包含了几个专栏,我怀疑您是否需要这些专栏。但是我认为它们在开发和测试期间是有用的


当心,Access查询设计器会抱怨它无法在设计视图中表示连接条件。如果在SQL视图中设置联接,则可以运行查询而不必抱怨访问。

该表是否只包含InspectionID和Continuous的唯一组合?@HansUp我不确定您对InspectionID 262的连续S01的请求不会重复。下一个是262的S02。注意:Continuous可以为NULL,但不适用。我得到错误:表达式中未定义函数子字符串谢谢!您知道是否可以同时显示SQL查询视图和数据视图吗?对不起,我不太清楚。。。查询不能同时在SQL视图和数据表视图中显示。这对开发来说太糟糕了。我还注意到MS ACCESS喜欢将SQL重新格式化为一大块文本。