DB2 SQL 列出另一个表中指定位置的单个字符值

问题描述 投票:0回答:1

给定两个表,我想匹配表二中字符串特定位置的值,以便我可以看到一个学生有多少产品:

表1:

项目 id
苹果 3
香蕉 4
胡萝卜 1
橘子 5
葡萄 2
甜瓜 6
苹果二代 7

表2:

学生 物品
亚当 'XXX12X5'
伊娃 'X3XX16X'

(将 X 视为空格)

预期结果是根据table2和table1列出项目数量:

A 栏 苹果 香蕉 胡萝卜 橘子 葡萄 甜瓜 苹果二代
亚当 1 2 5
伊娃 1 3 6

目前我使用子字符串一一检查生成,但我想按程序列出所有项目(我只添加了 7 个项目来简化问题,真实表有数千个字符长的字符串)

sql db2 ibm-midrange
1个回答
0
投票

使用此 SQL,您可以连接数据:

WITH
TABLE1(items, id) AS (VALUES ('apple', 3), ('banana', 4),
('carrot'   , 1),
('tangerine',   5),
('grape',   2),
('melon',   6),
('apple II',    7)
),

TABLE2(student, items) AS (VALUES ('Adam',  'XXX12X5'), ('Eva', 'X3XX16X'))


SELECT student, table1.items, replace(substr(table2.items, id, 1), 'X', '') FROM TABLE2 JOIN TABLE1 ON 1 =1     ;

这将是结果:

STUDENT ITEMS   00003
Adam    apple   
Eva apple   
Adam    banana  1
Eva banana  
Adam    carrot  
Eva carrot  
Adam    tangerine   2
Eva tangerine   1
Adam    grape   
Eva grape   3
Adam    melon   
Eva melon   6
Adam    apple II    5
Eva apple II    

现在您只需根据需要从垂直转换为水平

© www.soinside.com 2019 - 2024. All rights reserved.