为什么我的查询没有返回我期望的内容?

时间:2009-07-01 19:53:32

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

以下代码是我尝试使用的代码,以便从多个表中获取一列的计数和另外两列的平均值,然后将结果放入另一个表中。
我认为这会有效,但是新表中的计数与平均数一样不正确。很多时候,平均值超出了平均数的范围。被平均的数字都是负数,其中大多数都包含小数。列的数据类型设置为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

    MIUID       Latitude    Longitude    ProjRSSI   RealRSSI
    110108098   32.593021   -85.367073  -97.4625    -108

MIUsInGrid1001

    MIUID        Latitude    Longitude   ProjRSSI   RealRSSI
    110112556   32.592461   -85.337067  -101           -95
    110106208   32.592766   -85.337059  -101           -100
    110115010   32.59288    -85.337189  -101           -98

MIUsInGrid1002

    MIUID       Latitude    Longitude   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

我做错了什么?

3 个答案:

答案 0 :(得分:1)

为了能够使用AVG()群组功能,您是否必须按某种方式进行分组?

您的i变量包含哪些值?

答案 1 :(得分:1)

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

您是否确定在列出没有平均值或其他行的情况下填充表格?

如果您手动一次运行查询会怎样?

答案 2 :(得分:0)

我找到了答案,但我真的不明白。 NumberofMIUs 列将“Indexed”属性设置为“Yes (Duplicates OK)”。当我将设置更改为“No”时,查询工作正常。