通过组合两条记录通过

通过组合两条记录通过

问题描述:

我还是新手,在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(如果他们想要拉多个水果,则用逗号分隔)。

但是,当我有两个相关的水果具有不同的名称(例如红苹果和青苹果)时,我遇到了一个问题,我需要合并。有没有什么办法,我可以Group By这些记录和标记他们当前查询中的苹果我有?

谢谢!

是的,你可以使用像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 

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

+0

谢谢!我会试着研究一下'switch',并且会重点考虑2中最实际和最有效的方法。 – kulapo

你可以,但你将不得不有一个额外的表,你列出所有的水果,他们的团体。然后你可以加入,并由小组分组。

结构示例:

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

您可以预填充表具有快速SELECT DISTINCT Fruits from Tblsrce并插入两列,然后调整您想要的类别。