版友wangxy689 同志问询一个按照受理工号对五类作业记录各按20%随机抽样的问题,此问题属于分类随机抽样。原本想这个问题很简单,似乎可以用Rnd函数排序后top子句取数,最后用构造联合查询来解决。但发现联合查询跳错,估计是因为Rnd在联合查询各查询中同时出现有矛盾。想了想,还是用临时表的方式比较简单一些,便做此示例。
早上看见版友roych 同志已对该问题做了一个示例,该示例与我原来的思路基本相同,只是用了几个查询这样倒是避免了联合查询跳错。反过来看我现在的示例较之roych 的示例具有扩展性,roych 的示例局限性过大,一旦作业类别变化就需要新增、修改或删除查询。当然roych 可以进一步思路进行修改,这其中需要用到QueryDef对象,以这个对象来动态的创建、修改查询,这样的话,其扩展性的问题就迎刃而解了。
解决这个问题除非用到记录集,否则的话都是关于SQL语句的构造问题,而构造的过程关键是SQL语句各个部分的变量如何巧妙处理。对于SQL语句中的变量,许多版友都感到麻头,前不久zmt 同志就问过一个这方面的问题。我觉得在千变万化的变量处理中,记住一句诗就可以了:“阳光总在风雨后,变量放在引号外。”这个示例中有丰富的SQL语句的变量处理内容,初学者可以参考一下。
点击下载此附件