日期连接查询与计算字段

时间:2013-01-04 13:00:56

标签: sql inner-join outer-join calculated-field

我正在创建一个Access 2010数据库来替换旧的Paradox数据库。刚刚开始查询,并且没有隐藏我是SQL的新手。

我要做的是设置一个图表使用的查询。图表的Y轴是通过的简单百分比,X轴是某一天。该图表将在表单加载和后续新记录中创建,日期范围为“日期()和日期() - 30”(30天,滚动)。

我正在使用的数据库每天可以进行多次检查,多次通过,多次失败。每次检查都是单独的记录。

例如,在2012年11月26日,进行了7次检查; 5次通过,2次失败,71%((5/7)* 100%)接受。 “11/26/2012”和“71%”表示图表上的数据点。 2012年11月27日,进行了8次检查; 4次通过,4次失败,50%接受。等等。

以下是日期范围为“日期”和“处置”字段的查询示例“2012年11月26日 - 11/27/2012:”

SELECT Inspection.Date, Inspection.Disposition
FROM Inspection
WHERE (((Inspection.Date) Between #11/26/2012# And #11/27/2012#) AND ((Inspection.Disposition)="PASS" Or (Inspection.Disposition)="FAIL"));

Date       | Disposition
11/26/2012 | PASS
11/26/2012 | FAIL
11/26/2012 | FAIL
11/26/2012 | PASS
11/26/2012 | PASS
11/26/2012 | PASS
11/26/2012 | PASS
11/27/2012 | PASS
11/27/2012 | PASS
11/27/2012 | FAIL
11/27/2012 | PASS
11/27/2012 | FAIL
11/27/2012 | PASS
11/27/2012 | FAIL
11/27/2012 | FAIL

*注意 - 日期字段的类型为“日期”,“处置”字段的类型为“文本”。有些日子没有进行任何检查,现在这些日子不会显示在图表上。检查处置也可以列为“NA”,这是指另一种不能绘制的检查。

以下是我想在另一个查询中创建的布局(同样,为简洁起见,范围仅为2天):

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

我认为需要做的是记录日期本身的某种类型的连接以及其余查询结果中的“计算字段”。问题是 我还没有找到如何按日期“压平”记录并在一次查询中保持检查次数和通过/失败次数的计数。我需要多个分层查询吗?我不希望将任何查询存储为表格,因为这些数字的唯一用途是图形形式。

我正在考虑在数据库中创建新列,通过分配PASS“1”和失败“0”来绕过“Disposition”字段为Textual,但这似乎是一个警察。必须有一种方法可以在SQL中使用它,只是我没有找到适用的例子。

感谢您的帮助!任何意见或建议表示赞赏!带有表单,查询和图形的示例数据库也很有用!

1 个答案:

答案 0 :(得分:0)

您可以按Date进行分组,然后使用sumcount等聚合来计算该群组的统计信息:

select  Date
,       count(*) as [# Insp]
,       sum(iif(Disposition = 'PASS',1,0)) as [# Passed]
,       sum(iif(Disposition = 'FAIL',1,0)) as [# Failed]
,       100.0 * sum(iif(Disposition = 'PASS',1,0)) / count(*) as [% Acceptance]
from    YourTable
where   Disposition in ('PASS', 'FAIL')
group by
        Date