1

2010 へのアクセスはこちら。質問があります (Andomar さん、ありがとうございます!):

SELECT Inspection.Date, count(*) AS [# Insp], sum(iif(Disposition = 'PASS',1,0)) AS [# Passed], sum(iif(Disposition = 'FAIL',1,0)) AS [# Failed], sum(iif(Disposition = 'PASS',1,0)) /  count(*) AS [% Acceptance]
FROM Inspection
WHERE Disposition in ('PASS', 'FAIL') AND ((Inspection.Date) Between Date() And Date()-30)
GROUP BY Date;

これにより、次のような表が得られます。

Date       | # Insp | # Passed | # Failed | % Acceptance
11/26/2012 | 7      | 5        | 2        | 71 
11/27/2012 | 8      | 4        | 4        | 50 
...

このクエリを使用して、参照用として、グラフの下にあるサブフォームの「テーブル」を作成しようとしています。列 (日付) と行の見出しの両方が必要なため、「テーブル」の書式設定は重要です。テーブルがリアルタイムで生成されることを強調するために、括弧内にテーブルがあります。つまり、Access オブジェクトとして保存されません。

最終結果は次のようになります。

Date         | 11/26/2012 | 11/27/2012 ...
# Insp       | 7          | 8
# Passed     | 5          | 4
# Failed     | 2          | 4
% Acceptance | 71         | 50

軸が反転しているだけなので、最適なケースのようですが、私の人生では、データを破壊しない解決策を見つけることができません。クロス集計クエリでは、1 つの値に対して 1 つ以上のカテゴリをフィルター処理することしかできませんでした。これは組合が使用されるものですか?またはピボット?変換は必要でしょうか?それはとても単純な問題であるべきだと思われます。これは SQL で実行できるものですか、それとも「テーブル」を配置するには VBA が必要ですか? 助けてくれてありがとう!

これらのリンクは適用可能と思われます:

MS Access の列から行へ

行を列にピボットする方法

4

1 に答える 1

0

これは、変換するための2段階のプロセスである必要があります。まず、現在のクエリのデータを列ではなく行にローテーションする必要があります。次に、日付を行ではなく列に変換する必要があります。

クエリは次のようになります。

TRANSFORM max(val) as MaxValue
SELECT col
FROM
(
  SELECT [Date], '# Insp' as Col, [# Insp] as  val 
  FROM yourQuery
  UNION ALL
  SELECT [Date], '# Passed' as Col, [# Passed] as val
  FROM yourQuery
  UNION ALL
  SELECT [Date], '# Failed' as Col, [# Failed] as val
  FROM yourQuery
  UNION ALL
  SELECT [Date], '% Acceptance' as Col, [% Acceptance] as val
  FROM yourQuery
) 
GROUP BY col
PIVOT [Date]

現在のクエリがデータベースに保存されているyourQueryと思います。私の例では、クエリの名前に置き換えます。

上記のサンプルの値を使用してMSAccess2003でこれをテストしたところ、希望する結果が得られました。

于 2013-01-04T21:03:57.500 に答える