【问题标题】:SQL Code for Running Total does not recognise table name运行总计的 SQL 代码无法识别表名
【发布时间】:2013-06-29 12:06:59
【问题描述】:

我有一个关于在 MS Access 2010 中创建运行总计的问题,类似于此处的问题:

Access 2010 - query showing running total for multiple records, dropping old record and adding new record on each line

但是,当我从该线程输入等效代码时,我收到一条错误消息,提示找不到数据库(Access 似乎认为我指定的表是数据库名称)

这是来自原始线程的代码:-

SELECT hbep1.EmployeeID, hbep1.PayPeriodID, 
    (
    SELECT Sum(hbep2.HoursUsed) 
    FROM Hours_by_Empl_PP hbep2
    WHERE hbep2.EmployeeID=hbep1.EmployeeID 
        AND (hbep2.PayPeriodID Between hbep1.[PayPeriodID]-3 
        And hbep1.[PayPeriodID])
    ) AS Sum_of_Hours_last_4_PPs
FROM Hours_by_Empl_PP hbep1;

这是我在查询中输入的代码:-

SELECT 
    V4_Try.ID_NIS_INV_HDR,
    V4_Try.ID_ITM, 
    V4_Try.RunTot3, 
    V4_Try.BomVsActQty,
    DMin("RunTot3","V4_Try","[ID_Itm]=" & [ID_ITM]) AS IDItmMin,  
    DMax("RunTot3","V4_Try","[ID_Itm]=" & [ID_ITM]) AS IDItmMax, 
    (
       SELECT Sum([V4_Try].[BomVsActQty])
       FROM [V4_Try].[BomVsActQty]
       WHERE [V4_Try].[ID_ITM]=[V4_Try].[ID_ITM]
           AND (IDItmMax < IDItmMin) 
    ) AS RunTot6
FROM V4_Try
ORDER BY V4_Try.ID_ITM, V4_Try.RunTot3;

【问题讨论】:

    标签: ms-access-2010 cumulative-sum


    【解决方案1】:

    我注意到的一件事是主查询使用DMax()DMin() 创建一些别名列

    ...
    DMin("RunTot3","V4_Try","[ID_Itm]=" & [ID_ITM]) AS IDItmMin,  
    DMax("RunTot3","V4_Try","[ID_Itm]=" & [ID_ITM]) AS IDItmMax,
    ...
    

    然后子查询尝试在其 WHERE 子句中使用这些别名

    (
       SELECT ...
       WHERE...
           AND (IDItmMax < IDItmMin) 
    ) AS RunTot6
    

    我很确定子查询不会知道“父”查询中的列别名,因此它们可能是无法识别的项目。

    【讨论】:

    • +1 -- 正确。我无法解决这个问题,但我确定这让我很困扰。
    【解决方案2】:

    首先运行这个查询:

    SELECT * FROM V4_Try;
    

    然后针对复杂性进行开发。在其他任何事情之前构建嵌套查询。当您知道它运行时,请尝试添加您的别名,然后添加 DMax() 函数,依此类推。隔离出现错误的点。

    这是修复查询的过程。

    哦,请详细说明 Access 引发的错误。此外,如果这是从 VBA 运行的,请告知我们,因为这会影响您的故障排除。

    【讨论】:

      猜你喜欢
      • 2022-08-09
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-04
      • 2013-09-01
      • 1970-01-01
      相关资源
      最近更新 更多