【和SQL对比】按指定次序排序

根据月度销售额表计算每次第一个月比上季同月的增长额,有些月可能无数据。

SQL解法

with M as (select 1 月 from dual union select 4 from dual union
           select 7 from dual union select 10 from dual)
select 月, 销售额,销售额-LAG(销售额) over(order by 月)
from (select M.月 月,销售表.销售额 销售额
      from M left join 销售表 on (M.月=销售表.月份) )
order by 月

SQL完成指定次序排序需要用外连接,而且还要有专门的序号字段保证结果集的次序。

SPL解法

A
1 =demo.query(“select * from 销售表”).align@1([1,4,7,10],月份)
2 =A1.new(#:月,销售额,销售额-销售额[-1]:增长额)

SPL特有的对齐运算可以替代SQL的外连接,有序集合机制也无须再有序号字段。