SQL select语句将导致关联表

时间:2014-04-30 21:27:11

标签: sql ibm-midrange

我工作的公司使用AS400(iSeries)。系统字典中有一些数据我试图将其转换为关联表。 这是数据的样子

xtype | xdata    
 60   | 011111211            212  
 60   |                      345   
 60   | 212312               169  

xtype是"键"这将允许我返回相关数据。

212,345,169是员工编号,位于24个字符xdata列的左侧3个字符中。

011111211是3"地区" (011111211),同样212312是2"地区" (212312

我想最终得到的是

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并将它们加入到看起来像关联表的结果中。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

所以你有一个返回212 | 011 / 169 | 212的查询,另一个返回212 | 111 / 169 | 312,第三个返回212 | 211,那是对的吗?

将此转换为您要求的结果的明显答案是使用UNION ALL来组合这三个查询。您正在寻找加入查询的方法,但是(简单地说)加入会添加列,当您要添加的是行时。