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重新格式化为一大块文本。