我如何在DB2中用SQL脚本将两个不同的单元格拆分为行

knpiaxh1  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(150)

我有一个这样的表。我的问题是这个数据是嵌套存储的。我想用DB2脚本代码来修复这个问题。我用Python做了这个,但我不确定我们是否能用SQL做。
| A级|B| C类|
| - -|- -|- -|
| 一个|十进制|一百二十三一百二三四一百二三四五|
我想要这张table。
| A级|B| C类|
| - -|- -|- -|
| 一个|业务连续性|一百二十三|
| 一个|二进制编码|小行星一千二百三十四|
| 一个|商业中心|小行星12345|

gfttwv5a

gfttwv5a1#

试试看:

with mytab (A, B, C) as
(
  values
    (1, 'BC BCD BCDE', '123 1234 12345')
  , (2, 'ab cd', '11 22 33')
  , (3, 'ef gh  ij', '44  55')
)  
select t.*, x.tok_b, x.tok_c
from 
  mytab t
, table
(
  select 
    coalesce (c.seq, b.seq) as seq
  , b.tok as tok_b
  , c.tok as tok_c
  from xmltable
  (
    'for $id in tokenize($s, " +") return <i>{string($id)}</i>' 
    passing t.b as "s"
    columns 
      seq for ordinality
    , tok varchar (20) path '.'
  ) b
  full join xmltable
  (
    'for $id in tokenize($s, " +") return <i>{string($id)}</i>' 
    passing t.c as "s"
    columns 
      seq for ordinality
    , tok varchar (20) path '.'
  ) c on c.seq = b.seq
) x

| A级|B| C类|TOK_B(结束)|TOK_C文件|
| - -|- -|- -|- -|- -|
| 一个|十进制|一百二十三一百二三四一百二三四五|业务连续性|一百二十三|
| 一个|十进制|一百二十三一百二三四一百二三四五|二进制编码|小行星一千二百三十四|
| 一个|十进制|一百二十三一百二三四一百二三四五|商业中心|小行星12345|
| 2个|AB CD|十一二十二三十三|AB公司|十一|
| 2个|AB CD|十一二十二三十三|光盘|二十二个|
| 2个|AB CD|十一二十二三十三||三十三个|
| 三个|埃夫格日|四十四五十五|有效|四十四岁|
| 三个|埃夫格日|四十四五十五|生长激素|五十五人|
| 三个|埃夫格日|四十四五十五|i j||

相关问题