0

プロジェクト用のデータベースを作成する必要があります。過去 2 か月間、MS Access 2010 の基本を学び、より具体的なクエリのために SQL に手を出し始めました。そうは言っても、私はプログラムの機能について非常に基本的な理解と知識を持っています。

一連の計算を表示するために、単一のテーブルからクエリを作成しようとしています。私は多くの進歩を遂げましたが、今は頭を悩ませており、助けを求めています.

Table: LIT_ALL

SITE  DATE    TRANSECT  CATEGORY  DISTANCE_M
PIT  6/2/2011     1        RKC      0.25
PIT  6/2/2011     1        FMA      0.58
PIT  6/2/2011     1        LHC      0.75
PIT  6/2/2011     2        FMA      0.5
PIT  6/2/2011     2        SA       0.6
PIT  6/2/2011     2        RKC      0.52
PIT  6/2/2011     2        LHC      0.6
PIT  6/2/2011     3        CCA      0.59
PIT  6/2/2011     3        LHC      0.6
PIT  6/2/2011     3        FMA      0.52

このコードを使用して

TRANSFORM Sum(DISTANCE_M) AS SumOfDISTANCE_M
SELECT SITE, DATE, [CATEGORY]
FROM LIT_ALL
GROUP BY SITE, DATE,[CATEGORY]
PIVOT TRANSECT;

最終製品の部分的なフォーマットがあります

SITE  DATE      CATEGORY   1    2    3 
PIT   6/2/2011  CCA                  .59
PIT   6/2/2011  FMA       .58  .5    .52
PIT   6/2/2011  LHC       .75  .6    .6
PIT   6/2/2011  RKC       .25  .52    
PIT   6/2/2011  SA             .6

いくつかの行き止まりを除いて、私はこのような結果を生み出すことができませんでした.

SITE    DATE     CATEGORY   1      2      3     AVG    STD    SE
PIT    6/2/2011  CCA       0.00   0.00   34.5   11.5   19.92  6.64
PIT    6/2/2011  FMA       36.71  22.52  30.41  29.88  7.11   2.37
PIT    6/2/2011  LHC       47.47  27.03  35.09  36.53  10.30  3.43
PIT    6/2/2011  RKC       15.82  23.42  0.00   13.08  11.95  3.98
PIT    6/2/2011  SA        0.00   27.03  0.00   9.01   15.60  5.20

この例に示されている値はパーセント値です。1、2、3 フィールド (ピボットされたトランセクト フィールド) の各値は、フィールド 1、2、または 3 のセル値/合計 (それぞれ 1、2、または 3 の値)*100 によってフォーマットされます。Nullの削除にも問題があります。私はNz関数を使用してある程度の成功を収めました..新しく挿入されたO値を考慮せずにAVGを取得し、AVGをオフにするだけでした。STDEV は、ミル ポップ stdev の日常的な実行です。SE はエラーを表します。この場合は STDEV/3 (トランセクトの総数) です。私を正しい方向に向けてくれてありがとう..私は毎日新しいトリックを学んでいます! 提案を受け入れる

4

1 に答える 1

0

2 つのクエリを作成します。そのうちの 1 つはピボットです。2 番目のクエリは、avg、stdev、および se の集計を使用する標準の選択です。次に、ピボット クエリを集計に結合する 3 番目のクエリを作成します。いくつかのフィールド名を変更しました。

qryピボット

 TRANSFORM Sum(LIT_ALL.DISTANCE) AS SumOfDISTANCE
 SELECT LIT_ALL.SITE, LIT_ALL.dtDATE, LIT_ALL.[CATEGORY]
 FROM LIT_ALL
 GROUP BY LIT_ALL.SITE, LIT_ALL.dtDATE, LIT_ALL.[CATEGORY]
 PIVOT LIT_ALL.TRANSECT;

qryStats

 SELECT LIT_ALL.Site, LIT_ALL.dtDate, LIT_ALL.category, Avg(LIT_ALL.distance) AS Mean,
 StDev(LIT_ALL.distance) AS SD, StDev([distance])/3 AS SE
 FROM LIT_ALL
 GROUP BY LIT_ALL.Site, LIT_ALL.dtDate, LIT_ALL.category;

qryResult

SELECT qryPivot.*, qryStats.Mean, qryStats.SD, qryStats.SE
FROM qryPivot INNER JOIN qryStats ON (qryPivot.CATEGORY = qryStats.category) AND 
(qryPivot.dtDATE =   qryStats.dtDate) AND (qryPivot.SITE = qryStats.Site);

ピボット列の名前が常にわかっているとは限らないため、select * を使用します。

于 2012-08-15T12:38:23.673 に答える