通过Group By组合两个记录

时间:2017-09-26 10:11:58

标签: vba ms-access

我仍然是新手,并在Access vba中学习,并感谢您能帮助我了解当前的情况。

我在VBA中开发了一个代码,用于从名为Tblsrce

的表中提取数据
sqlStr = "SELECT zYear, zMonth, Product, Sum(Dollar) as totalAmt FROM Tblsrce "& _
             "WHERE fruits IN (NOT NULL, '" & Replace(strFruits, ", ", "', '")
             "GROUP BY zYear, zMonth, Product;"

田地fruits包含芒果,苹果,樱桃,香蕉等的常用数据

strFruits是来自用户的variable(如果他们想要提取超过1个水果,则用逗号分隔。)

然而,当我有两个不同名称的相关水果(例如Red Apple和Green Apple)需要结合时,我遇到了问题。有没有什么方法可以Group By这些记录并在我当前的查询中将它们标记为苹果?

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以,但你必须有一个额外的表格,列出所有水果及其组。然后你可以加入,并按小组分组。

样本结构:

  Fruit       | FruitCategory 
+-------------+---------------+
| Red apple   | Apple         |
+-------------+---------------+
| Green apple | Apple         |
+-------------+---------------+
| Banana      | Banana        |
+-------------+---------------+

您可以使用快速SELECT DISTINCT Fruits from Tblsrce预填充表格并在两列中插入,然后根据需要调整类别。

答案 1 :(得分:0)

是的,你可以使用像switch function这样的条件来计算一些水果组字段。

Switch(
  Product='Red Apple', 'Apple'
  Product='Green Apple', 'Apple'
  Product='Orange', 'Citrus') As ProductGroup

然后,您可以在更高级别的查询中使用该字段:

Select zYear, zMonth, ProductGroup,
       Count(*)
From
  (Select f.*, 
          Switch( .... ) 
   From Fruits f)
Group By zYear, zMonth, ProductGroup 

当然,如果这些数据不是像这样在查询中动态计算会更容易,而是存储在一个单独的表中,因此您知道每个产品的产品组。这也更容易维护(只需添加数据而不是修改查询),并且可能表现更好。