2017-09-26 3 views
0

Ich bin immer noch neu und lernen in Access vba und zu schätzen, wenn Sie mir mit meinem aktuellen Szenario helfen können.Kombinieren zwei Datensätze über die Gruppe Von

Ich habe einen Code in VBA entwickelt, das die Daten aus einer Tabelle Tblsrcefruits enthält Mango, Äpfel, Kirsche, Banane, usw.

strFruits genannt ziehen

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

Die üblichen Daten, die das Feld ist eine variable, die von Benutzern kam (die durch Komma getrennt ist, wenn sie mehr als 1 Frucht ziehen möchten).

Allerdings habe ich ein Problem damit, wenn es zwei verwandte Früchte mit anderem Namen gibt (z. B. Red Apple und Green Apple), die ich kombinieren muss. Gibt es einen Weg, ich kann diese Datensätze Group By und als Äpfel in der aktuellen Abfrage, die ich habe?

Danke!

Antwort

0

Ja, Sie könnten Konditionalwerte wie switch function verwenden, um ein Fruchtgruppenfeld zu berechnen.

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

Sie dann das Feld in einer höheren Ebene Abfrage verwenden können:

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

Natürlich ist es einfacher wäre, wenn diese Daten nicht dynamisch in der Abfrage wie folgt berechnet wird, sondern gespeichert wird in einer separaten Tabelle, so dass Sie eine Produktgruppe für jedes der Produkte kennen. Das ist auch viel einfacher zu pflegen (fügen Sie einfach Daten hinzu, anstatt eine Abfrage zu modifizieren) und leistet wahrscheinlich bessere Ergebnisse.

+0

Danke! Ich werde versuchen, über 'switch' zu recherchieren und gewichten, was der praktischste und effizienteste Weg unter den 2 ist. – kulapo

0

Sie könnten, aber Sie müssten eine zusätzliche Tabelle haben, wo Sie alle Früchte und ihre Gruppen auflisten. Dann können Sie dem beitreten und nach Gruppen gruppieren.

Beispielstruktur:

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

Sie können die Tabelle mit einem schnellen SELECT DISTINCT Fruits from Tblsrce vorab ausgefüllt und dass in beiden Spalten einzufügen, und dann die Kategorien einstellen, wo Sie wollen.