1

私の質問に答えるために、データ構造を単純化します。サンプル、分析、値の 3 つのテーブルがあります。Sample には、Pk autonumber フィールド、SampleID、および DateCreated フィールドがあります。Analysis には、PK 自動採番フィールド AnalysisID と AnalysisName フィールドがあります。Values には、SampleID、AnalysisID、Value の 3 つのフィールドがあります。データの一般的なレイアウトを以下に示します。

サンプル

 SampleID     DateCreated
 1            6/1/2013
 2            6/2/2013
 3            6/3/2013
 4            6/3/2013

分析

AnalysisID    AnalysisName
1             Temp
2             Density
3             Mass

SampleID    AnalysisID    Value
1           1             65
1           2             1.1
2           1             68
2           2             1.0
2           3             57
3           2             1.2
4           2             0.9
4           3             54

今、私は誰かがその場でクエリを設計できるようにしたいと思っています...そして、このデータを次の形式にする方法を理解できれば、それを理解できると思います。たとえば、ユーザーがすべてのサンプルと分析を必要とする場合、クエリは次のようなテーブルを生成する必要があります...

SampleID  DateCreated  Temp  Denisty  Mass
1         6/1/2013     65    1.1 
2         6/2/2013     68    1.0      57
3         6/3/2013           1.2
4         6/3/2013           0.9      54

この結果を得るためにクエリはどのようになりますか? 最終的な SQL の結果がどのように見える必要があるかを理解できる限り、VBA を使用してオンザフライで作成する方法を理解できます。ありがとう!

4

2 に答える 2

3

これを行う PIVOT テーブル クエリを次に示します。
表 1 ~ 3 は、リストした順序です。また、予約語であるため、Value の名前を Value1 に変更しました。

TRANSFORM First(Table3.Value1) AS FirstOfValue1
SELECT Table1.SampleID, Table1.DateCreated
FROM Table2 INNER JOIN (Table1 INNER JOIN Table3 ON Table1.SampleID = Table3.SampleID) ON Table2.AnalysisID = Table3.AnalysisID
GROUP BY Table1.SampleID, Table1.DateCreated
PIVOT Table2.AnalysisName;

これをクエリ ビルダーの SQL 部分に貼り付けてから、デザイン ボタンをクリックして、どのように行われるかを確認します。

于 2013-06-07T05:04:21.977 に答える
2

アクセス固有の回答についてはわかりませんが、おそらく、すべての結合なしで単純化された CASE ステートメントを使用できます。

SELECT SampleID, DateCreated
       ,MAX(CASE WHEN AnalysisID = 1 THEN Value ELSE '' END) as Temp
       ,MAX(CASE WHEN AnalysisID = 2 THEN Value ELSE '' END) as Density
       ,MAX(CASE WHEN AnalysisID = 3 THEN Value ELSE '' END) as Mass
FROM Tables/Joins, Etc.
GROUP BY SampleID, DateCreated

PIVOT 関数を調べることもできますが、分析タイプがほんの一握りしかない場合は、これが簡単な方法です。

于 2013-06-07T01:20:24.920 に答える