2017-12-29 74 views
-1

変換およびピボットMS-Accessで、私は次のように表が見えてい

Field1 Field2  Blank Fail Pass Date 
a   1   0  20  40  170101 
a   2   1  19  99  170101 
b   1   0  54  24  170101 
c   3   1  24  30  170101 
a   1   0  11  19  170102 
b   2   0  21  266  170102 
a   1   2  10  40  170103 
.... 

ユーザーは、彼らが表示したい日付範囲を選択し、私は私の結果は次のようになりたい:

Field1 Field2 0101_B 0101_F 0101_P 0102_B 0102_F 0102_P 0103_B 0103_F 0103_P 
a  1  0  20  40  0  11  19  2  10  40 
a  2  1  19  99 
b  1  0  54  24 
c  3  1  24  30  
b  2        0  21  266 

本当にありがとうございました!

+1

SQLクエリのようなMS Accessクエリは、そのような階層型の列を生成しません。 Excelのピボット、SASテーブル、Pythonのパンダなどをご検討ください – Parfait

+0

ありがとうございました!私は必要な出力形式を変更し、それを階層的な列にしませんでした。これは可能ですか? – Krystalcc

答えて

0

オプション:

  1. CROSSTABのソースとしてUNIONクエリ - パラメータが実際にフォーム上のコントロールを参照する必要があります。
    PARAMETERS StartDate Long, EndDate Long; TRANSFORM Sum(Q.Data) AS SumOfData SELECT Q.Field1, Q.Field2, Q.Yr FROM (SELECT Field1, Field2, Blank AS Data, "B" AS Source, [Date], Mid([Date],3) & "_B" AS MonDayCat, Int(Left([Date],2)) AS Yr FROM Table1 UNION SELECT Field1, Field2, Pass, "P", [Date], Mid([Date],3) & "_P", Int(Left([Date],2)) AS Yr FROM Table1 UNION SELECT Field1, Field2, Fail, "F", [Date], Mid([Date],3) & "_F", Int(Left([Date],2)) AS Yr FROM Table1) AS Q WHERE (((Q.Date) Between [StartDate] And [EndDate])) GROUP BY Q.Field1, Q.Field2, Q.Yr PIVOT Q.MonDayCat;

  2. 3つのクロス集計クエリは、その後 'TEMP' の表にCROSSTABS

  3. レビューhttp://allenbrowne.com/ser-67.html#MultipleValues

  4. VBAプロシージャの書き込みレコードに参加

これらのオプションのいずれも許可しません毎日のデータがある場合は1年に2回、最大で2.5ヶ月です。 CROSSTABに基づいて永久に実行される安定したレポートを作成することは容易ではありません。レビューhttp://allenbrowne.com/ser-67.html#ColHead

関連する問題