2017-09-26 106 views
0

我還是新手,在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這些記錄和標記他們當前查詢中的蘋果我有?

謝謝!

回答

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 

當然會更容易些,如果這個數據是不是在這樣的查詢動態計算的,而是被儲存在一個單獨的表格中,因此您知道每個產品的產品組。這也更容易維護(只需添加數據而不是修改查詢),並可能執行得更好。

+0

謝謝!我會試着研究一下'switch',並且會重點考慮2中最實際和最有效的方法。 – kulapo

0

你可以,但你將不得不有一個額外的表,你列出所有的水果,他們的團體。然後你可以加入,並由小組分組。

結構示例:

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

您可以預填充表具有快速SELECT DISTINCT Fruits from Tblsrce並插入兩列,然後調整您想要的類別。