我有一个表[tblFull1 04WoodsideTransportV335],所有数据都来自该表。我想获取[数据位置]和[load_case],其中应力为Max,Min或Abs。它适用于Max和Min。但是由于某种原因,它不适用于Abs。它在ms Access 2013中运行。我使用vba以编程方式生成查询。
Abs和max,min运算符之间有什么区别,使其无法正常工作?
当Abs查询运行时,由于某种原因它会在广告中显示“ As Expr1”,为什么要这么做呢?
我知道SQL看起来很糟糕,但是可以正常工作。如果您有任何改进建议,请告诉我。
对不起,我的英语不好,我是挪威人。
具有MAX函数的SQL:
SELECT DISTINCT
t1.[load_case], t2.[Data Location] AS Nodenr,
t2.[MaxOfHoop Stress N/mm^2]
FROM
[tblFull1 04WoodsideTransportV335] AS t1,
(SELECT
[tblFull1 04WoodsideTransportV335].[Data Location],
MAX([tblFull1 04WoodsideTransportV335].[Hoop Stress N/mm^2]) AS [MaxOfHoop Stress N/mm^2]
FROM
[tblFull1 04WoodsideTransportV335]
GROUP BY
[tblFull1 04WoodsideTransportV335].[Data Location]
HAVING ((([tblFull1 04WoodsideTransportV335].[Data Location])
In (SELECT [Data Location]
FROM [tblFull1 04WoodsideTransportV335]
GROUP BY [Data Location]
HAVING Count(*) > 1))
AND ((MAX([tblFull1 04WoodsideTransportV335].[Hoop Stress N/mm^2])) Is Not Null))
ORDER BY
[tblFull1 04WoodsideTransportV335].[Data Location]) AS t2
WHERE
((t1.[Hoop Stress N/mm^2]) = [t2].[MaxOfHoop Stress N/mm^2])
ORDER BY
t1.[load_case] DESC;
具有Abs功能的SQL:
SELECT DISTINCT
t1.load_case, t2.[Data Location] AS Nodenr,
t2.[AbsOfHoop Stress N/mm^2] AS Expr1
FROM
[tblFull1 04WoodsideTransportV335] AS t1,
(SELECT
[tblFull1 04WoodsideTransportV335].[Data Location],
ABS([tblFull1 04WoodsideTransportV335].[Hoop Stress N/mm^2]) AS[AbsOfHoop Stress N/mm^2]
FROM [tblFull1 04WoodsideTransportV335]
GROUP BY [tblFull1 04WoodsideTransportV335].[Data Location]
HAVING ((([tblFull1 04WoodsideTransportV335].[Data Location])
In (SELECT [Data Location]
FROM [tblFull1 04WoodsideTransportV335]
GROUP BY [Data Location]
HAVING Count(*) > 1))
AND ((ABS([tblFull1 04WoodsideTransportV335].[Hoop Stress N/mm^2])) Is Not Null))
ORDER BY
[tblFull1 04WoodsideTransportV335].[Data Location]) AS t2
WHERE
(((t1.[Hoop Stress N/mm^2])=[t2].[AbsOfHoop Stress N/mm^2]))
ORDER BY
t1.load_case DESC;
在SQL中,在“ HAVING”语句中,只能使用在“ GROUP BY”中定义的列。对于其他列,您必须在聚合函数中使用,然后是:-AVG()-返回平均值-COUNT()-返回行数-FIRST()-返回第一个值-LAST()-返回最后一个值-MAX()-返回最大值-MIN()-返回最小值-SUM()-返回总和
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句