如何使用ms access中不相关表的范围创建sql查询?

如何使用ms access中不相关表的范围创建sql查询?,sql,ms-access,range,Sql,Ms Access,Range,我有一个ms access 2010数据库,其中有两个不相关的表:天和周期。例如: Days ----- Day (Date) Value (Integer) 及 我想要一张新桌子,像这样: Periods_Query ----- PeriodNum (Integer) Value (Integer) - sum of all Values from table Days, where Day is in between StartDate and End

我有一个ms access 2010数据库,其中有两个不相关的表:天和周期。例如:

Days
-----
Day (Date)
Value (Integer)

我想要一张新桌子,像这样:

Periods_Query
-----
PeriodNum (Integer)
Value (Integer) - sum of all Values from table Days, where Day is in between 
                  StartDate and EndDate
我试图构建一个SQL查询,但我不知道如何获取范围。尝试过这样的事情,但没有成功:

SELECT Period, Sum(Value) FROM Days, Periods;
那么,有没有办法构建这样一个查询


谢谢。

创建表格后,请清空

运行以下insert语句:

 Insert Periods_Query(PeriodNum, SumValues)
 Select p.PeriodNum, Sum(d.Value)
 From Periods p
    Join Days d On 
       d.Day Between p.StartDate And p. EndDate
 Group By p.PeriodNum

创建表后,清空

运行以下insert语句:

 Insert Periods_Query(PeriodNum, SumValues)
 Select p.PeriodNum, Sum(d.Value)
 From Periods p
    Join Days d On 
       d.Day Between p.StartDate And p. EndDate
 Group By p.PeriodNum
从简单的SELECT查询开始,按照您的意愿合并基础数据

选择d.日期、d.值、p.[期间]、p.StartDate、p.EndDate 从天开始为d,期间为p 式中,d.开始日期和结束日期之间的日期; 然后通过查询转换为聚合组以计算总和

选择p.[Period],Sumd.Value作为SumOfValue 从天开始为d,期间为p 其中d.日期介于p.StartDate和p.EndDate之间 按p[周期]分组; 我得到的印象是,您可能希望将该结果集存储在另一个表中。但是,您可能会认为这是不必要的,因为您可以在任何地方使用该查询,您可以使用另一个表。但是,如果确实需要存储结果集,则可以转换为插入查询

插入句点\u QueryPeriodNum,[值] 选择p.[Period],Sumd.Value作为SumOfValue 从天开始为d,期间为p 其中d.日期介于p.StartDate和p.EndDate之间 按p[周期]分组; 从简单的SELECT查询开始,按照您的意愿合并基础数据

选择d.日期、d.值、p.[期间]、p.StartDate、p.EndDate 从天开始为d,期间为p 式中,d.开始日期和结束日期之间的日期; 然后通过查询转换为聚合组以计算总和

选择p.[Period],Sumd.Value作为SumOfValue 从天开始为d,期间为p 其中d.日期介于p.StartDate和p.EndDate之间 按p[周期]分组; 我得到的印象是,您可能希望将该结果集存储在另一个表中。但是,您可能会认为这是不必要的,因为您可以在任何地方使用该查询,您可以使用另一个表。但是,如果确实需要存储结果集,则可以转换为插入查询

插入句点\u QueryPeriodNum,[值] 选择p.[Period],Sumd.Value作为SumOfValue 从天开始为d,期间为p 其中d.日期介于p.StartDate和p.EndDate之间 按p[周期]分组;
另一种方法是使用Access 07中测试的SUM over subselect:

选择Periods.PeriodNum、Periods.StartDate、Periods.EndDate,然后选择SUMDayValue 从天算起,其中Periods.StartDate和Periods.EndDate之间的天作为期间的日和;

另一种方法是使用Access 07中测试的子选择和:

选择Periods.PeriodNum、Periods.StartDate、Periods.EndDate,然后选择SUMDayValue 从天算起,其中Periods.StartDate和Periods.EndDate之间的天作为期间的日和;

感谢您的详细解释,我们使用了这种方法。一切正常。感谢您的详细解释,使用了这种方法。一切正常。