Sql oracle数据库中的连接表

Sql oracle数据库中的连接表,sql,oracle11g,Sql,Oracle11g,我有两个表,显示数据项主数据和BOM表。我想在Item master作为T1和BOM作为T2以及table BOM作为T3的附加表之间连接这些表。包含ITM_CD的项目主表,ITM_类型1,2,3,4,其中每个ITM_类型表示ITM_CD上第一个数字的代码。我想要的东西就像下面的图片 将CHILD_CD2值替换为CHILD_CD1值。所以数据应该是这样的。我应该解决什么问题?我对使用oracle查询非常陌生 这是mycode 选择不同的 T1.ITM_CD, T2.C_ITM_CD作为儿童_CD

我有两个表,显示数据项主数据和BOM表。我想在Item master作为T1和BOM作为T2以及table BOM作为T3的附加表之间连接这些表。包含ITM_CD的项目主表,ITM_类型1,2,3,4,其中每个ITM_类型表示ITM_CD上第一个数字的代码。我想要的东西就像下面的图片

将CHILD_CD2值替换为CHILD_CD1值。所以数据应该是这样的。我应该解决什么问题?我对使用oracle查询非常陌生

这是mycode

选择不同的 T1.ITM_CD, T2.C_ITM_CD作为儿童_CD1, T3.C_ITM_CD作为儿童_CD2 来自CM_HINMO_所有T1 内部连接从SM_BOM_ALL T2中选择P_ITM_CD、C_ITM_CD、BOM_PTN 在T1.ITM_CD=T2.P_ITM_CD上 左连接选择P_ITM_CD、C_ITM_CD、SM_BOM_PTN所有T3 在T2.C_ITM_CD=t3.P_ITM_CD上 其中0=0 和T2.BOM_PTN在1中 1,2中的T1.ITM_类型 和T1.ITM_CD='110100370' 2号订单
只需使用Case表达式来替换值

SELECT ITM_CD, CASE WHEN CHILD_CD2 IS NULL THEN CHILD_CD2 ELSE CHILD_CD1 END AS CHILD_CD1
    FROM TABLE1

只需使用Case表达式来替换值

SELECT ITM_CD, CASE WHEN CHILD_CD2 IS NULL THEN CHILD_CD2 ELSE CHILD_CD1 END AS CHILD_CD1
    FROM TABLE1
如果我理解,您希望child_cd2值优先于child_cd1(如果可用)。如果这个假设是正确的,那么我们可以使用coalesce,它返回第一个非空表达式来实现相同的结果

SELECT DISTINCT
    T1.ITM_CD,
    COALESCE(T3.C_ITM_CD,T2.C_ITM_CD) AS CHILD_CD1
  FROM CM_HINMO_ALL T1
  INNER JOIN SM_BOM_ALL T2 
     ON T1.ITM_CD = T2.P_ITM_CD
  LEFT JOIN SM_BOM_ALL T3 
     ON T2.C_ITM_CD = t3.P_ITM_CD
  WHERE T2.BOM_PTN IN (1)
    AND T1.ITM_TYP IN (1,2)
    AND T1.ITM_CD = '110100370'
ORDER BY 2
如果我理解,您希望child_cd2值优先于child_cd1(如果可用)。如果这个假设是正确的,那么我们可以使用coalesce,它返回第一个非空表达式来实现相同的结果

SELECT DISTINCT
    T1.ITM_CD,
    COALESCE(T3.C_ITM_CD,T2.C_ITM_CD) AS CHILD_CD1
  FROM CM_HINMO_ALL T1
  INNER JOIN SM_BOM_ALL T2 
     ON T1.ITM_CD = T2.P_ITM_CD
  LEFT JOIN SM_BOM_ALL T3 
     ON T2.C_ITM_CD = t3.P_ITM_CD
  WHERE T2.BOM_PTN IN (1)
    AND T1.ITM_TYP IN (1,2)
    AND T1.ITM_CD = '110100370'
ORDER BY 2

它没有给出任何错误消息,但显示的CHILD_CD1的值仅以第一位数字2开头…它没有给出任何错误消息,但显示的CHILD_CD1的值仅以第一位数字2开头…除了您提到的问题之外,查询是否一切正常?我特别感兴趣的是T2和T3之间的连接?我想T2和T3之间的连接表不是问题。我只想分解父项CD的BOM表,在不插入项目WIP的情况下用作子项CD的材料和组件在过程中工作ITM类型1:产品2:过程中工作3:材料4:组件除了您提到的问题外,查询是否一切正常?我特别感兴趣的是T2和T3之间的连接?我想T2和T3之间的连接表不是问题。我只想分解父项CD的BOM表,在不插入项目WIP的情况下用作子项CD的材料和组件在过程中工作ITM类型1:产品2:过程中工作3:材料4:组件您的假设是正确的,它适用于我。多谢各位much@Nurman艾德,很好。如果有任何答案可以解决你的问题,你可以打勾接受,如果答案不符合你的要求,你不必这样做,此外,如果任何其他答案给你一些想法,你也可以投弃权票。这是你对那些试图帮助你的人表示感谢的方式。你的假设是正确的,这对我很有用。多谢各位much@Nurman艾德,很好。如果有任何答案可以解决你的问题,你可以打勾接受,如果答案不符合你的要求,你不必这样做,此外,如果任何其他答案给你一些想法,你也可以投弃权票。这是你对那些试图帮助你的人表示感谢的方式。