而对于SPL来说,完全可以轻松解决固定分组中的各类难题,下面就用几个例子来说明。
表sales存储着订单记录,其中CLIENT列是客户名,AMOUNT列是订单金额。表sales的部分数据如下:
db927b2b62cd0004325b98d0f4143d11.png
要求将sales按照“潜力客户列表”进行分组,并对各组的AMOUNT列汇总求和。这里的“潜力客户”就是一种固定分组,可能来自于外部不同的条件设定:
案例一:潜力客户列表来自于另外一张表potential的Std字段,只有四条记录,依次为:ANATR、BERGS、LACOR、ZTOZ,并且客户ZTOZ不在sales表中。在输出结果时,要求按照上述记录顺序来分组汇总。
如果我们对分组的顺序没有要求,那么SQL可以较简单地实现本案例:
select potential.std as client, sum(sales.amount) as amount from potential left join client on potential.std=sales.client group by potential.std。
但如果像本案例中要求的那样,按照特定的顺序来分组,那么用SQL实现的话就必须制造一个用于排序的字段,最后还要用子查询去掉这个字段。而用SPL实现则会简单很多
这个限制是因为历史原因,西方世界有两个历法:儒略历(Junlian Calendar)和格里历(GregorionCalendar)。
这两个历法之间相差几天,所以当使用儒略历的文明转到格里历的时候,需要跳过10-13天,英国在1752年做了转换(这样,在这一年,1752-9-2的下一天1752-9-14)。
为什么SQLServer选择1753年作为开始时间呢?有一种猜测是,如果你要存储1753年以前的时间,必须要知道那个国家使用那种历法,还要处理被条跳过的10-13天,所以Sybase(SQLServer的前身)不允许使用1753年之前的日期。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)