计算字段中的项目以在表格中压缩

时间:2013-08-30 13:43:15

标签: sql ms-access ms-access-2007

SELECT [Import].[Product Name 1], Sum([Import].[Product 1 Qty]) AS [SumOfProduct 1 Qty]
FROM [Import]
GROUP BY [Import].[Product Name 1];

我有这个,它正如我所需要的那样工作。我现在需要它为Products和Qtys 2 - 10做同样的事情。问题是我希望它从第一个添加到总数而不是在我的表中创建一个新列。我需要这个来生成报告和出口以进行结算和发货。

我正在从客户端导入包含客户信息的数据。它包含所有必需的运输信息以及我们应该发运的产品和每个客户的数量。每个客户最多可以拥有10件不同数量的产品。我的目标是生成此报告,其唯一目的是显示项目以及从库存中提取所需物品的数量。我们将使用此报告作为我们履行部门的“选票”。它还将用于向客户提供计费目的。我想要表中的Items和Qty的原因是为了导出回客户端。表中我只想要的两列是产品和订购产品的总数。

1 个答案:

答案 0 :(得分:1)

您可以使用union all执行此操作:

SELECT [Import].[Product Name], Sum([Import].[Product 1 Qty]) AS [SumOfProduct Qty]
FROM [Import]
GROUP BY [Import].[Product Name 1]
union all
SELECT [Import].[Product Name 2], Sum([Import].[Product 2 Qty]) AS [SumOfProduct Qty]
FROM [Import]
GROUP BY [Import].[Product Name 2]
union all
...
SELECT [Import].[Product Name 10], Sum([Import].[Product 10 Qty]) AS [SumOfProduct Qty]
FROM [Import]
GROUP BY [Import].[Product Name 10];

这假设每列产品不同。如果产品相同且您想要总数:

SELECT ProductName, sum(ProductQTY)
FROM (select [Product Name 1] as ProductName, [Product 1 Qty] as ProductQty
      from [Import] union all
      select [Product Name 2], [Product 2 Qty]
      from [Import] union all
      . . .
      select [Product Name 10], [Product 10 Qty]
      from [Import]
     ) i
GROUP BY ProductName;

两种情况下的...表示您为其他产品添加了类似的代码,而不是文字" ..."。