2012-08-15 96 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 *。