SQL,根据唯一性拆分字段

SQL Server 的表 Table 有 word 字段。

AAA

AAB

AAC

ABA

ACA

ACB

BAA

BAB

BAC

BBA

BCA

BCB

BDA

AAA

请将 word 拆分为 3 个字段,第 1 个字段固定为原字段的第 1 个字符;如果原字段的前 2 个字符在全列是唯一的,如 ABA,则第 2 个字段是原字段,第 3 个字段是 null;如果不是唯一的,则第 2 个字段是前 2 个字符,第 3 个字段是原字段。

A

AA

AAA

A

AA

AAB

A

AA

AAC

A

ABA

null

A

AC

ACA

A

AC

ACB

B

BA

BAA

B

BA

BAB

B

BA

BAC

B

BBA

null

B

BC

BCA

B

BC

BCB

B

BDA

null

A

AA

AAA

编写SPL代码:


A

1

=mySQLDB.query("select word from Table")

2

=A1.new(left(word,1),word,null)

3

>A2.group(left(#2,2)).run(if(~.len()>1,~.run(#2=(left(#3=#2,2)))))

4

return A2

函数new新建二维表,group分组并保留分组结果,run循环修改并返回修改结果,~是当前组,#2是第2个字段。

来源:https://www.reddit.com/r/SQL/comments/1c82d1a/complex_multicolumn_string_manipulation_query/