*SQL,连结多行的字串并去除重复
MSSQL库data表存储了航班衔接关系,ID字段是航班组,即有衔接关系的一组航班;ROUTE字段是前后衔接关系,由前后两个航班组成,用短横连接;LNO字段是衔接顺序。
ID |
ROUTE |
LNO |
1 |
JFK-LAX |
1 |
1 |
LAX-IAD |
2 |
1 |
IAD-ORD |
3 |
5 |
MIA-ATL |
1 |
5 |
ATL-MIA |
2 |
2 |
SEA-IAH |
1 |
2 |
IAH-AUS |
2 |
2 |
AUS-SEA |
3 |
现在要算出每组航班的完整的衔接序列,并按航班组排序,仍然用短横连接。
ID |
ROUTE |
1 |
JFK-LAX-IAD-ORD |
2 |
SEA-IAH-AUS-SEA |
5 |
MIA-ATL-MIA |
编写SPL代码:
A |
|
1 |
=sqlServer1.query("select * from data order by ID,LNO") |
2 |
=A1.group(ID;~.(ROUTE.split("-")).conj().id@o().concat("-"):ROUTE) |
A1:执行简单SQL,注意排序。
A2:按ID分组,处理每组数据~。先将组内的ROUTE字段按-拆分,再一起合并,对前后重复的航班进行去除重复(不排序去重),最后用-连接。
英文版 https://c.scudata.com/article/1723793169782
跟着练习一下: