Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 将变量设置为ms access查询_Sql_Ms Access - Fatal编程技术网

Sql 将变量设置为ms access查询

Sql 将变量设置为ms access查询,sql,ms-access,Sql,Ms Access,我有一个MS Access数据库,它由9个表组成。每一个都代表了垃圾填埋场。 这些表格包含几个字段,主键是日期,其余字段是由几个市政当局发送到每个垃圾填埋场的垃圾吨数。 例如,对于表1: 日期市政1市政2 2014年1月1日50吨30吨 我试图创建的查询是找出每个城市在特定日期向所有垃圾填埋场发送多少吨垃圾。 代码应该是 SELECT Landfill_1.municipality_1, Landfill_2.municipality_1,...,Landfill_10.municipal

我有一个MS Access数据库,它由9个表组成。每一个都代表了垃圾填埋场。 这些表格包含几个字段,主键是日期,其余字段是由几个市政当局发送到每个垃圾填埋场的垃圾吨数。 例如,对于表1:

日期市政1市政2

2014年1月1日50吨30吨

我试图创建的查询是找出每个城市在特定日期向所有垃圾填埋场发送多少吨垃圾。 代码应该是

SELECT Landfill_1.municipality_1,    Landfill_2.municipality_1,...,Landfill_10.municipality_1
FROM Landfill_1.date INNER JOIN Landfill_2.date ,..., INNER JOIN Landfill_10.date
WHERE Landfill_1.date=[Please select the date:];

我的问题是,市政1应该是一个变量,这样我就不必每次都更改它。

将所有表中的数据附加到一个表中,并添加字段:市政ID。用1到9填充该表,作为记录的来源

在复合唯一索引中使用此字段和日期字段


现在您只需要一个查询。

取消激活源数据。在每一行中只记录一组变量,并将市政当局和垃圾填埋场标识符合并到键中

Landfill, municipality, date,     amount
1,        1,            1/1/2014, 50
2,        1,            1/1/2014, 30
使用查询

SELECT Landfill, municipality, date, SUM(amount)
    GROUP BY Landfill, municipality, date
返回聚合结果,然后在Access或Excel中透视结果

避免数据库中未标准化的数据,以允许更一般的查询。结果的表示不应该是数据库模式设计的主要考虑因素


这也扩展到任何数量的垃圾填埋场和城市,没有进一步的数据库模式更改。

你的意思是你想更改
城市1
字段的名称?是的,我的意思是,如果有人想对城市2使用相同的查询,他不应该为每个垃圾填埋表手动更改它(10次)!没有别的办法吗?我不认为这个解决方案可行,因为我从excel工作表中获取数据,这使我能够轻松地将它们复制并粘贴到我的数据库中。如果我遵循您的解决方案,我将不得不手动键入大约10000个条目的数据。如果数据已经以固定形式捕获,您可以创建一个临时表将其移动到Access中。然后,使用
INSERT
查询将数据移动到正确的形式。要求以正确的形式收集未来的数据,并在其工作簿中向用户提供数据透视表,以便他们可以继续以首选格式查看数据。