当前位置: 首页 > 面试题库 >

如何在Access中创建时间序列并可以在查询中使用它

鞠修雅
2023-03-14
问题内容

事实:

我使用Access 2013,但它也必须在Access 2007中运行。

我有以下3个表:

命令:

Id      DateFrom        DateTo  
1       2014-12-01      2015-03-01
2       2014-01-02      2015-03-01
3       2015-01-03      2015-03-01

库存:

Id      Label       Amount
1       Product1    20
2       Product2    10

OrderStock:

Id      OrderId     StockId     Amount
1       1           1           10
2       2           1           5
3       2           2           5
4       3           2           5

用户输入:

  • DateFrom:2015-01-01
  • 日期至:2015-01-03
  • 股票编号:1和2

问题:

是否可以为日期为X到Y的子查询创建“临时”表?在用户输入中,如下所示:

dates
2015-01-01
2015-01-02
2015-01-03

我想得到以下结果:

Date        StockLabel  AmountInUse     AmountAvailable
2015-01-01  Product1    10              10
2015-01-01  Product2    0               10
2015-01-02  Product1    15              5
2015-01-02  Product2    5               5
2015-01-03  Product1    15              5
2015-01-03  Product2    10              0

如果甚至在不使用VBA的Access中也可以进行查询,查询的外观将如何?


问题答案:

是的。创建这样的查询:

SELECT DISTINCT 
    [Tens]+[Ones] AS Factor, 
    10*Abs([Deca].[id] Mod 10) AS Tens, 
    Abs([Uno].[id] Mod 10) AS Ones
FROM 
    msysobjects AS Uno, 
    msysobjects AS Deca;

将其另存为qdyFactor。然后创建此查询:

SELECT DISTINCT 
    DateAdd("d",[Factor],[DateFrom]) AS Dates
FROM 
    qdyFactor
WHERE 
    qdyFactor.Factor Between 0 And DateDiff("d",[DateFrom],[DateTo]);

这将创建日期列表。最后,使用它来过滤和汇总其他表。



 类似资料:
  • 问题内容: 在MS Access中,我想在选择查询的返回结果中插入新列。新列的每一行都具有相同的值。例如,我的选择返回列A,B,而我希望C成为选择查询创建的新列: 问题答案:

  • 主要内容:创建一个更新查询,创建一个删除查询,创建一个建表查询在本章中让我们来了解如何创建查询。 创建一个更新查询 可以使用更新查询更改表中的数据,并且可以使用更新查询来输入条件以指定应更新哪些行。 在执行更新之前,更新查询提供了一个查看更新数据的机会。 让我们再次转到“创建”选项卡,然后单击“查询设计”。 在“表”选项卡的“显示表”对话框中,双击表,然后关闭对话框。 在“设计”选项卡的“查询类型”组中,单击“更新”并双击要更新值的字段。假设要将员工编号为:

  • 问题内容: 我正在尝试在MySQL中创建序列(从整体上来说,我对SQL还是很新的)。我正在使用以下代码,但这会导致错误: ORDID指向我正在使用的表中的字段。如何正确创建序列? 编辑: 据称,MySQL不使用序列。我现在正在使用以下代码,但这也会引起错误。我该如何解决? 编辑: 我想我找到了解决方法。对于phpMyAdmin(我正在使用),您可以使用以下代码。 我不知道为什么它会喜欢这种方式,但

  • 问题内容: 假设我们使用Unix timestamp列将事件记录在Sqlite数据库中: 并且我们想要快速查找日期时间范围,例如: 与此类似,给人这是不好的,所以一个显而易见的解决方案是 创建一个索引 用。 这样就解决了问题,但是要为已经增加的序列/已经排序的列维护索引是一个很 糟糕的解决方案,我们可以 直接在O(log n)中 使用 B树搜索 来为其建立索引。在内部,这将是索引: 这浪费了数据库

  • 问题内容: 我正在使用MS Access2003。我想在MS Access中的“查询”中运行大量插入SQL语句。有没有简单(或确实有任何方法)做到这一点? 问题答案: 是的,没有。 您不能: 但是你可以做 如果您还没有表中的数据,那对您有什么帮助?好吧,您可以制作一个由很多带有硬编码结果的Select联合组成的Select语句。 注意:我还必须包括某种形式的虚拟表(例如,onerow),以愚弄访问

  • 问题内容: 我有两个表命名和 我需要获得输出 问题答案: 此数据转换称为A ,从SQL Server 2005开始,具有将数据从行转换为列的功能。 有多种方法可以完成此操作,具体取决于您是否有要转换为列的静态数量的值。所有这些都涉及向数据添加a ,因此您可以返回任何产品的多行。 您可以将聚合函数与表达式一起使用: 参见带有演示的SQL Fiddle 您可以使用以下功能: 请参阅带有演示的SQL F