用于从其他表中查找数据的SQL/Oracle SQL代码

用于从其他表中查找数据的SQL/Oracle SQL代码,sql,oracle,Sql,Oracle,如何编写查询以从其他表中获取现有表中每列的数据 我想你现在面临的问题是,如何获得所有3列的全名。该方法的第1步是将SYSTEM_代码表连接三次- SELECT DT.ID ,SC1.FULL_NAME CAT_CODE_FULL_NAME ,SC2.FULL_NAME GROUP_CODE_FULL_NAME ,SC3.FULL_NAME OTHER_CODE_FULL_NAME ,DT.PRODUCT FROM DATA_TABLE DT JOI

如何编写查询以从其他表中获取现有表中每列的数据


我想你现在面临的问题是,如何获得所有3列的全名。该方法的第1步是将SYSTEM_代码表连接三次-

SELECT DT.ID
      ,SC1.FULL_NAME CAT_CODE_FULL_NAME
      ,SC2.FULL_NAME GROUP_CODE_FULL_NAME
      ,SC3.FULL_NAME OTHER_CODE_FULL_NAME
      ,DT.PRODUCT
FROM DATA_TABLE DT
JOIN SYSTEM_CODE SC1 ON SC1.VALUE = DT.CAT_CODE
JOIN SYSTEM_CODE SC2 ON SC2.VALUE = DT.CAT_CODE
JOIN SYSTEM_CODE SC3 ON SC3.VALUE = DT.CAT_CODE
您可以在system_代码上左键连接三次:

为避免重复连接,另一种解决方案是执行条件聚合:

select
    d.id,
    max(case when s.value = d.cat_code   and s.code = 1 then s.full_name end) cat_code_full_name,
    max(case when s.value = d.group_code and s.code = 2 then s.full_name end) group_code_full_name,
    max(case when s.value = d.other_code and s.code = 3 then s.full_name end) other_code_full_name
from data_table d 
left join system_code s on s.value in (d.cat_code, d.group_code, d.other_code)
gtoup by d.id

因此,它不是一个代码编写服务。当你陷入困境时,你应该试着提出一个问题。我删除了sql server和oracle的冲突标记。请只添加一个相关的。可能重复的我是一个新的SQL我尽了最大努力,但我不能得到结果。因此,我需要你们的帮助。这里的大多数人希望样本表数据和预期结果是格式化文本,而不是图像。有太多的列与系统代码表匹配。所以我还有那么多时间加入。还有另一种方法吗?@Hemant:我用一个使用唯一左连接的解决方案更新了我的答案。@GBM,非常感谢你,你是天才。非常感谢。下次我确保只添加相关标签,并在提问之前遵守规则。再次感谢大家,欢迎@Hemant!如果我的回答正确回答了你的问题,请点击绿色的复选标记。。。谢谢谢谢你让我知道这件事,接受它。我从我的同事那里得到了另一种方法,选择d.id,从系统代码s中选择s.full\u name,其中s.system\u code=1,s.value=d.cat\u code作为数据表数据中的cat\u code\u full\u name有很多列与系统代码表匹配。所以我还有那么多时间加入。还有别的办法吗?
select
    d.id,
    max(case when s.value = d.cat_code   and s.code = 1 then s.full_name end) cat_code_full_name,
    max(case when s.value = d.group_code and s.code = 2 then s.full_name end) group_code_full_name,
    max(case when s.value = d.other_code and s.code = 3 then s.full_name end) other_code_full_name
from data_table d 
left join system_code s on s.value in (d.cat_code, d.group_code, d.other_code)
gtoup by d.id