2012-08-15 101 views
0

我需要爲一個項目創建一個數據庫。我花了幾個月的時間學習MS Access 2010中的基礎知識,並開始涉足SQL以獲得更具體的查詢。據說,我對程序的功能有一些非常基本的瞭解和認識。訪問2010 SQL查詢Deadend

我試圖從一個表創建一個查詢來顯示一系列計算。我已經取得了很多進展,但現在我正在撓頭,轉而尋求幫助。

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/sumtotal(分別爲1,2或3值)* 100格式化1,2,3字段中的每個值(Pivoted Transect Field)。我也遇到了刪除Null的問題。我已經使用Nz函數獲得了一定程度的成功。只有我讓我的AVG不考慮新插入的O值並拋棄AVG。 STDEV是你的日常運行的工廠流行stdev。 SE表示錯誤。在這種情況下,STDEV/3(即Transects的總數)。感謝任何和所有的幫助,讓我指向正確的方向。我每天都在學習新的技巧!對建議開放

回答

0

創建2個查詢其中之一是您的樞軸。第二個查詢是一個標準選擇,包含avg,stdev和se的集合。然後創建第三個將數據透視查詢連接到聚合的查詢。我改變了一些字段名稱。

qryPivot

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 *。