1

我的表叫做“table1”,如下所示:

面积 | 所有者 | 编号 | 平均的

1200 | 美联储_G | 998 | 1400

1220 | 隐私 | 1001 | 1600

1220 | 本地_G | 1001 | 1430

1220 | Prov_G | 1001 | 1560

1220 | 隐私 | 1674 | 1845年

1450 | Prov_G | 1874 | 1982年

理想情况下,我想做的是将平均列中的几行相加,如果:1.它们具有相同的numberid(假设三行都有一个numberid=1000,那么它们的平均值将加在一起)2.Area=1220

然后将其附加到现有表中,同时将 Owner 字段设置为“ALL”。

我刚开始使用 Access,所以我不确定该怎么做,这是我可怕的尝试:

SELECT ind.Area, ind.Owner, ind.numberid, 
(SELECT SUM([Average]) FROM   [table1] 
WHERE [numberid]=ind.numberid) AS Average
FROM [table1] AS ind
WHERE (((ind.numberid)>="1000" And (ind.numberid)<"10000") AND ((ind.Area)="1220"))

谁能指导我完成我应该做什么?我不习惯 sql 语法。

我尝试使用“ind”作为比较变量。

到目前为止,它给了我列名但没有输出。

4

2 回答 2

2

我仍然不确定我是否明白你想要什么。因此,我将为您提供此查询,并让您告诉我们结果是否是您想要的,或者它与您想要的有什么不同。

SELECT
    t.Area,
    'ALL' AS Owner,
    t.Numberid,
    Sum(t.Average) AS SumOfAverage
FROM table1 AS t
GROUP BY t.Area, 'ALL', t.Numberid;

使用您的示例数据,该查询为我提供了这个结果集。

Area Owner Numberid SumOfAverage
1200 ALL        998         1400
1220 ALL       1001         4590
1220 ALL       1674         1845
1450 ALL       1874         1982
于 2012-05-02T15:08:24.983 回答
1

如果您改进问题的措辞,也许我可以(也许)给您一个更好的答案。

但是,对于 <>,您需要选择average列和分组依据 numberidArea列。由于 Owner 字段是 <> 我想在这个查询中我写的并不重要:

SELECT numberid, area, SUM(average)
FROM table1
WHERE owner = 'your-desired-owner-equal-to-all'
GROUP BY numberid, area
ORDER BY numberid, area
于 2012-05-02T13:54:51.123 回答