【和SQL对比】针对子表查询

列出员工的首份工作公司

SQL解法

用多表连接

select 姓名,公司 首份工作公司
from (select 员工.姓名 姓名,履历表.公司 公司,
         row_number() over(partition by 履历表.姓名
                order by 履历表.开始日期) 工作序号
      from 员工表,履历表 WHERE 员工表.姓名=履历表.姓名)
where 工作序号=1

用子查询

select 姓名,
    (select 公司 from 履历表
     where 姓名=A.姓名 and
           开始日期=(select min(开始日期) from 履历表
                    where 姓名=A.姓名)) 首份工作公司
from 员工表 A

SQL不能将子表记录集合作为主表的属性(字段)处理,针对子表的查询要么转成多表连接,要么采用子查询每次临时计算子表,书写复杂且计算低效。

SPL解法

A
1 =demo.query(“select * from 员工表”).new(姓名,履历.minp(开始日期).公司:首份工作公司)

SPL支持将子表集合作为主表字段,就如同访问其它字段一样,子表无需重复计算。