我碰到的尝试写一些SQL的MS Access将分析一些数据在我希望的方式向下一个问题。虽然我承认新的(或仍然在学习超出了大专班我花了五年前的边界)与问候到SQL,我想,认为我想要做的可以完成。访问SQL条件分句多个条件/记录栏一样
场景: 虽然我可能没有开始这个所有有效下手的,我开始和两个表。原始数据集从72K记录开始。
这个目标,或者我在这个案子中想要达到的目标是找到某个人出现多于一个指控的所有记录,然而定义为拥有0分的指控的结果是有罪的,但是其他费用被发现NG或解雇。
这是我到目前为止。我开始使用的数据来自两个表格,一个包含外观,一个包含代码和点。
的外观的一个例子是类似以下内容:
APP DATE CHARGE OUTCOME
===================================
1 1/1/2014 137 GT
2 1/5/2014 122 GT
2 1/5/2014 123 DI
3 1/6/2014 257 DI
3 1/6/2014 257 DI
4 1/6/2014 137 NG
4 1/6/2014 123 DI
4 1/6/2014 122 GT
我该链接的费用,与充电相关的积分潜在数量第二个表,非常简单的格式有
CHARGE POINT
===============
122 0
123 2
137 2
257 0
所以我设计了几个基本的查询,因为我主要是基于这是给我提供了大量的数据文件中的填空。第一个拉着加入了前两个表一起,所以我留下了看上去沿东西线的表:
APP DATE CHARGE OUTCOME POINTS
==========================================
1 1/1/2014 137 GT 2
2 1/5/2014 122 GT 0
2 1/5/2014 123 DI 2
3 1/6/2014 257 DI 0
3 1/6/2014 257 DI 0
4 1/6/2014 137 NG 2
4 1/6/2014 123 DI 2
4 1/6/2014 122 GT 0
然后我创建了各自三个小的查询要求出示数据从一个子集主查询,一个用于观察= GT,点= 0,另一个用于结果= NG,积分> 2,最后结果= DI,积分> 2。查询中的每一个被称为带来由原来的72K设置到39K记录生成表查询。应用另一个查询
Select * from record_set Where RecordID IN
(Select RecordID from record_Set
GROUP BY RecordID
HAVING COUNT (*) > 1))
最终带来了总计下降到不到21K。
我的问题是这样的: 我想回需要进一步过滤结果的数据集。目前我还没有想出如何剔除其中两个值都为0。据我所知,我应该走近这个一个完全不同的方式APP值。
编辑: 我要寻找的是返回到看起来像这样的数据集:
APP DATE CHARGE OUTCOME POINTS
==========================================
2 1/5/2014 122 GT 0
2 1/5/2014 123 DI 2
4 1/6/2014 137 NG 2
4 1/6/2014 123 DI 2
4 1/6/2014 122 GT 0
当单个记录被拔掉,并且其中结果是DI/0,所有的APP涉及的费用。
我一直在使用一个简单的WHERE子句仅分析记录单值试图目前尝试。我想我正在寻找一种方法来评估两者。也许,如果我写的价值单独的临时表,然后做了工会只对出现的两个表中的APP值会更容易?
任何帮助或指导将不胜感激!
对不起,我清理了我的问题,以便更清楚一点。我想要做的是清除所有记录中包含仅为0的点值的实例。因此,如果某人有5条记录,我需要能够将它们与自己进行比较。 – dramerus
到目前为止我唯一的想法就是解决这个问题,如下所示:分开收费/应用程序组合,这些收费/应用程序组合不包含点数。生成一个适用APP的列表,然后在两个表格之间进行比较。如果两者都不出现,那么它将不被包括在内....也许?想法? – dramerus
我仍然有点困惑 - 用你的逻辑测试我的建议会给你提供你请求的结果集。 http://sqlfiddle.com/#!9/97c0c/3 –