我工作的公司使用AS400(iSeries)。系统字典中有一些数据我试图将其转换为关联表。 这是数据的样子
xtype | xdata
60 | 011111211 212
60 | 345
60 | 212312 169
xtype
是"键"这将允许我返回相关数据。
212,345,169
是员工编号,位于24个字符xdata
列的左侧3个字符中。
011111211
是3"地区" (011
,111
和211
),同样212312
是2"地区" (212
,312
)
我想最终得到的是
empNum | territory
------------------
212 | 011
212 | 111
212 | 211
169 | 212
169 | 312
以下是我迄今为止所做的工作:
SELECT
*
From
(
select
right(xdata,3) as empNum,
trim(coalesce(left(xdata,3),'')) as ter
from Table
where xtype=60 and xarg < 960
) as outerTable
where ter <> ''
和
trim(coalesce(substr(xdata,4,3),'')) as ter
where ter <> ''
适用于第二个领域
和
trim(coalesce(substr(xdata,7,3),'')) as ter
where ter <> ''
适用于第三个领域
我不知道如何获取这些3并将它们加入到看起来像关联表的结果中。有什么想法吗?
答案 0 :(得分:2)
所以你有一个返回212 | 011
/ 169 | 212
的查询,另一个返回212 | 111
/ 169 | 312
,第三个返回212 | 211
,那是对的吗?
将此转换为您要求的结果的明显答案是使用UNION ALL
来组合这三个查询。您正在寻找加入查询的方法,但是(简单地说)加入会添加列,当您要添加的是行时。