如何创建一个子查询来对 Access 2007 中的计算列求和..?
How do I create a subquery that sums a calculated column in Access 2007..?
如何使以下 query/subquery 工作..?其目的是计算订单的重量。然后该查询将用作其他查询的子查询,并加入发票编号。如果可能的话,我想在 SQL.
中不使用 subquery/subselect 来完成这项工作
为清楚起见,我应该声明此查询是在我为 IBM iSeries DB2 SQL 服务器上的旧且混乱的 AS400 订单管理系统创建的 Access 2007 "utility frontend" 中进行的通过减员继承,但这些细节可能与问题无关。
此开发版本的查询与硬编码到其中的发票编号完美配合:
SELECT Sum([OrdersThisWeek].[Qty]*[Products].[Wgt]) AS InvWgt
FROM Products INNER JOIN OrdersThisWeek ON Products.Item = OrdersThisWeek.Item
WHERE OrdersThisWeek.InvNum=557618 AND OrdersThisWeek.Qty>0 AND Products.Wgt>0;
但如下所示,当我将发票编号从 WHERE 移动到 SELECT、保存它、将其放入另一个查询并将其加入发票编号时,会导致以下错误:"You tried to execute a query that does not include the specified expression 'InvNum' as part of an aggregate function.".我明白这意味着什么,但我不知道该怎么办:
SELECT OrdersThisWeek.InvNum, Sum([OrdersThisWeek].[Qty]*[Products].[Wgt]) AS InvWgt
FROM Products INNER JOIN OrdersThisWeek ON Products.Item = OrdersThisWeek.Item
WHERE OrdersThisWeek.Qty>0 AND Products.Wgt>0;
我玩过它,用谷歌搜索过它,并阅读过它,但显然我遗漏了一些关键概念。
这意味着,从 table OrdersThisWeek 开始,如果您想计算发票号 557618 上的商品的重量,您将得到如下结果:
InvNum InvWgt
------ ------
557618 42
但是如果您不指定发票编号,SQL 就不知道如何对结果进行分组。您是否只想从每个订单的重量中拿出一大笔钱?可能不会。你想在你的声明中使用 'GROUP BY' 这样的:
SELECT OrdersThisWeek.InvNum, Sum([OrdersThisWeek].[Qty]*[Products].[Wgt]) AS InvWgt
FROM Products INNER JOIN OrdersThisWeek ON Products.Item = OrdersThisWeek.Item
WHERE OrdersThisWeek.Qty>0 AND Products.Wgt>0
GROUP BY OrdersThisWeek.InvNum;
如何使以下 query/subquery 工作..?其目的是计算订单的重量。然后该查询将用作其他查询的子查询,并加入发票编号。如果可能的话,我想在 SQL.
中不使用 subquery/subselect 来完成这项工作为清楚起见,我应该声明此查询是在我为 IBM iSeries DB2 SQL 服务器上的旧且混乱的 AS400 订单管理系统创建的 Access 2007 "utility frontend" 中进行的通过减员继承,但这些细节可能与问题无关。
此开发版本的查询与硬编码到其中的发票编号完美配合:
SELECT Sum([OrdersThisWeek].[Qty]*[Products].[Wgt]) AS InvWgt
FROM Products INNER JOIN OrdersThisWeek ON Products.Item = OrdersThisWeek.Item
WHERE OrdersThisWeek.InvNum=557618 AND OrdersThisWeek.Qty>0 AND Products.Wgt>0;
但如下所示,当我将发票编号从 WHERE 移动到 SELECT、保存它、将其放入另一个查询并将其加入发票编号时,会导致以下错误:"You tried to execute a query that does not include the specified expression 'InvNum' as part of an aggregate function.".我明白这意味着什么,但我不知道该怎么办:
SELECT OrdersThisWeek.InvNum, Sum([OrdersThisWeek].[Qty]*[Products].[Wgt]) AS InvWgt
FROM Products INNER JOIN OrdersThisWeek ON Products.Item = OrdersThisWeek.Item
WHERE OrdersThisWeek.Qty>0 AND Products.Wgt>0;
我玩过它,用谷歌搜索过它,并阅读过它,但显然我遗漏了一些关键概念。
这意味着,从 table OrdersThisWeek 开始,如果您想计算发票号 557618 上的商品的重量,您将得到如下结果:
InvNum InvWgt
------ ------
557618 42
但是如果您不指定发票编号,SQL 就不知道如何对结果进行分组。您是否只想从每个订单的重量中拿出一大笔钱?可能不会。你想在你的声明中使用 'GROUP BY' 这样的:
SELECT OrdersThisWeek.InvNum, Sum([OrdersThisWeek].[Qty]*[Products].[Wgt]) AS InvWgt
FROM Products INNER JOIN OrdersThisWeek ON Products.Item = OrdersThisWeek.Item
WHERE OrdersThisWeek.Qty>0 AND Products.Wgt>0
GROUP BY OrdersThisWeek.InvNum;