1

私は製造工場用のアクセス アプリケーションを構築し、プロセスに沿ったさまざまなデータ ポイントをリストするレポートを提供しました。次のようなレポートを生成する方法があります。

 Batch     Zone    Value1     Value 2   etc.
 25        1       5          15
 25        2       12         31
 26        1       6          14 
 26        2       10         32

ただし、別の形式でデータを表示する必要があります。彼らは、すべてのデータを水平にして、バッチごとに 1 行を希望しています。このような...

                Zone 1                Zone 2
 Batch     Value1     Value2     Value1     Value2
 25        5          15         12         31
 26        6          14         10         32

2 番目の例のように表示すると、全部で 157 列になります。7 つの一意のフィールド名がありますが、残りは繰り返される 14 の異なるデータ型です。フィールド名が同じであるという事実に対して、彼らが望む形式でデータを表示するためのクエリを取得できませんが、最初の方法でそれを行うのは難しくありません。VBA を使用してデータをテーブルに挿入できますが、重複したフィールド名を使用することはできません。そのため、これを Excel にエクスポートする場合、フィールド名は何の意味も持たず、セクション (zone1 など) を含めることはできません。 、zone2 など) レポートをこれにリンクできますが、レポートの幅は 22 インチしかないため、読みやすい方法で表示するには、エクスポートしてから、反対側で Excel シートの vba 処理を行う必要があります。 .

データをフォーマット #1 にすることができます。バッチ番号に基づいてデータを 1 つの長い行に表示する方法はありますか? これがどのように実行可能かについて、他の誰かが素晴らしい考えを持っていますか?

どんな提案にもオープンです。ありがとう!

4

1 に答える 1

5

あなたの質問では、あなたはそれを言います

次のようなレポートを生成する方法があります

次に、データを次のようにリストします

Batch  Zone  Value1  Value2
-----  ----  ------  ------
   25     1       5      15
   25     2      12      31
   26     1       6      14
   26     2      10      32

おそらく、データはすでにどこかで「ピボットされていない」形式になっている可能性があります (Value別々の行に異なる s があります)。そうでない場合は、次のクエリのようなものを使用してそれを実現します。

SELECT 
    [Batch],
    "Zone" & [Zone] & "_" & "Value1" AS [ValueID],
    [Value1] AS [ValueValue]
FROM BatchDataByZone
UNION ALL
SELECT 
    [Batch],
    "Zone" & [Zone] & "_" & "Value2" AS [ValueID],
    [Value2] AS [ValueValue]
FROM BatchDataByZone

...戻る:

Batch  ValueID       ValueValue
-----  ------------  ----------
   25  Zone1_Value1           5
   25  Zone2_Value1          12
   26  Zone1_Value1           6
   26  Zone2_Value1          10
   25  Zone1_Value2          15
   25  Zone2_Value2          31
   26  Zone1_Value2          14
   26  Zone2_Value2          32

ただし、そのクエリを [BatchDataUnpivoted] として保存すると、単純なクロス集計クエリを使用して各バッチの値を「文字列化」できます...

TRANSFORM Sum(BatchDataUnpivoted.[ValueValue]) AS SumOfValueValue
SELECT BatchDataUnpivoted.[Batch]
FROM BatchDataUnpivoted
GROUP BY BatchDataUnpivoted.[Batch]
PIVOT BatchDataUnpivoted.[ValueID];

...戻る...

Batch  Zone1_Value1  Zone1_Value2  Zone2_Value1  Zone2_Value2
-----  ------------  ------------  ------------  ------------
   25             5            15            12            31
   26             6            14            10            32
于 2013-10-14T11:26:20.030 に答える