复制
收藏
提问
全网

oracle查询info表字段为orgid,orgname,orgcode,orglev,parid,其中perid存的为父级数据的orgid。需要查询返回的字段为name,code,name1,code1,orglev,其中name、code、orglev的值为查询条件orglev为1或者2查询出的数据的orgname、orgcode、orglev,name1、code1为空。查询条件orglev为3或者4查询出的数据的orgname、orgcode、orglev,存入name1、code1、orglev。name、code的值为这条数据parid对应的orgid数据的orgname、orgcode。请给出代码示例

4aecf6b55
1个月前
全网
文档
学术
百科
知识库
时间不限
自动
回答简洁
更专业一些
  • 根据查询条件,需要编写一个SQL查询语句,用于在Oracle数据库中检索特定字段,并根据条件进行数据转换和关联。
  • SQL查询语句

  • 基本查询:首先,从info表中选择基本字段。
  • 条件关联:根据orglev的值,对namecode进行条件关联,使用子查询获取parid对应的orgnameorgcode
  • 字段映射:将查询结果映射到所需的输出字段。
SELECT
  i.orgname AS name,
  i.orgcode AS code,
  CASE
    WHEN i.orglev IN (1, 2) THEN NULL
    ELSE (SELECT orgname FROM info WHERE orgid = i.parid) END AS name1,
  CASE
    WHEN i.orglev IN (1, 2) THEN NULL
    ELSE (SELECT orgcode FROM info WHERE orgid = i.parid) END AS code1,
  i.orglev
FROM
  info i
WHERE
  i.orglev IN (1, 2, 3, 4);
  • 此查询语句首先从info表中选择orgnameorgcodeorglev字段。然后,根据orglev的值,使用CASE语句和子查询来确定name1code1字段的值。如果orglev为1或2,则name1code1为NULL;如果orglev为3或4,则从info表中查询parid对应的orgnameorgcode作为name1code1的值。最后,根据orglev的值筛选记录。

以上内容由AI搜集生成,仅供参考

在线客服