【问题标题】:Why is my query not returning what I expect?为什么我的查询没有返回我所期望的?
【发布时间】:2009-07-01 19:53:32
【问题描述】:

下面的代码是我尝试使用的,以便从多个表中获取一列的计数和另外两列的平均值,然后将结果放入另一个表中。
我认为这会起作用,但是放入新表的计数与平均值一样不正确。很多时候,平均值超出了平均数字的范围。被平均的数字都是负数,其中大部分包含小数。列的数据类型设置为Number,平均数字(源和目标)的字段大小设置为Double


代码:

    For i = 1000 To 1783   
    strQuery1 = "Insert Into MIUsInGridAvgs (NumberofMIUs, ProjRSSI, RealRSSI)  " & _
                "Select  Count(MIUID), Avg(ProjRSSI), Avg(RealRSSI) " & _
                "From MIUsInGrid" & i & " "
                
    
    DoCmd.SetWarnings False  
    DoCmd.RunSQL strQuery1  
    DoCmd.SetWarnings True

    Next

我查询的所有表名都以 1000 到 1783 之间的数字结尾。


示例数据:

MIUsInGrid1000

MIUD 纬度经度 ProjRSSI RealRSSI 110108098 32.593021 -85.367073 -97.4625 -108

MIUsInGrid1001

MIUD 纬度经度 ProjRSSI RealRSSI 110112556 32.592461 -85.337067 -101 -95 110106208 32.592766 -85.337059 -101 -100 110115010 32.59288 -85.337189 -101 -98

MIUsInGrid1002

MIUD 纬度经度 ProjRSSI RealRSSI 110172260 32.593349 -85.366318 -104.408333333333 -99 110106870 32.593464 -85.365822 -104.408333333333 -106

结果:

NumberofMIUs ProjRSSI RealRSSI 1 -97.4625 -108 'MIUsInGrid1000 1 -100.883333333333 -109 'MIUsInGrid1001 1 -109.521428571429 -99 'MIUsInGrid1002

我做错了什么?

【问题讨论】:

  • 您发布的代码中没有明显的内容。将您的表格减少到几条记录,发布记录和确切的代码,包括您如何显示值。
  • 另外,当我只为一张表运行它时,而不是循环它,我得到了正确的结果。
  • 伊皮!! Rich B 又来骚扰我了!!感谢无缘无故的反对票。过好自己的生活,别管我,孩子。

标签: sql ms-access ms-access-2007


【解决方案1】:

您是否必须按某些内容进行分组才能使用AVG() 分组功能?

您的i 变量包含什么值?

【讨论】:

  • 我打赌 i 是一个索引,他希望该值是所有表的平均值。 :P
  • 不。我只想要每个表的平均值。我被用来逐步浏览每张桌子。因为我想要每个表中所有记录的平均值,所以我认为我不需要使用 Group。
【解决方案2】:

涉及哪些数据类型? MIUsInGrid###MIUsInGridAvgs中的列有哪些类型?

您确定表格在您列出时已填充,没有平均值或其他行吗?

如果您一次手动运行一个查询会发生什么?

【讨论】:

    【解决方案3】:

    我找到了答案,但我不太明白。 NumberofMIUs 列将“Indexed”属性设置为“Yes (Duplicates OK)”。当我将设置更改为“No”时,查询运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-15
      • 2021-05-30
      • 1970-01-01
      • 2021-12-11
      • 2018-05-11
      • 1970-01-01
      相关资源
      最近更新 更多