我仍然是新手,并在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
这些记录并在我当前的查询中将它们标记为苹果?
谢谢!
答案 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
当然,如果这些数据不是像这样在查询中动态计算会更容易,而是存储在一个单独的表中,因此您知道每个产品的产品组。这也更容易维护(只需添加数据而不是修改查询),并且可能表现更好。