复制
收藏
提问
全网
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。请给出代码示例
1个月前
回答简洁
更专业一些
- 根据查询条件,需要编写一个SQL查询语句,用于在Oracle数据库中检索特定字段,并根据条件进行数据转换和关联。
-
SQL查询语句
- 基本查询:首先,从
info
表中选择基本字段。 - 条件关联:根据
orglev
的值,对name
和code
进行条件关联,使用子查询获取parid
对应的orgname
和orgcode
。 - 字段映射:将查询结果映射到所需的输出字段。
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
表中选择orgname
、orgcode
和orglev
字段。然后,根据orglev
的值,使用CASE
语句和子查询来确定name1
、code1
字段的值。如果orglev
为1或2,则name1
和code1
为NULL;如果orglev
为3或4,则从info
表中查询parid
对应的orgname
和orgcode
作为name1
和code1
的值。最后,根据orglev
的值筛选记录。