2017-09-26 7 views
0

私はまだ新しいですし、Access vbaで学び、私の現在のシナリオで私を助けることができれば感謝します。グループを介して2つのレコードを結合する

は私が名前のテーブルからデータを取得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)の2つの関連果物があるときに問題が発生しました。私は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

ありがとうございます!私は「スイッチ」について研究し、2の中で最も実用的で効率的な方法であるものを重視するように試みます。 – kulapo

0

ただし、フルーツとそのグループをすべて一覧表示するテーブルを追加する必要があります。次に、あなたはそれに参加し、グループによってグループ化することができます。

サンプル構造:

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

あなたが速いSELECT DISTINCT Fruits from Tblsrceで表を事前に移入し、両方の列にそれを挿入し、あなたがしたいカテゴリを調整することができます。