distinct
dt_define_info.id, dt_define_info.code, dt_define_info.name, dt_define_info.alias_code,
dt_define_info.alias_name, dt_define_type.code as class_code, dt_define_info.group_code,
dt_define_info.project_id,dt_define_info.category,dt_define_info.first_tag,
dt_define_info.second_tag, dt_define_info.priority,dt_define_info.input_mode,
dt_define_info.unit,dt_define_info.data_type,dt_define_info.is_multiple,dt_define_info.is_region,
dt_define_info.formater,dt_define_info.data_source,
dt_define_info.remark,dt_define_info.sub_flag,
dt_define_info.weak_point,dt_define_info.show_order,dt_define_info.version,dt_define_info.creator,
dt_define_info.creation_time,dt_define_info.modifier,dt_define_info.modified_time,
dt_define_info.valid,dt_define_info.ts
(case
when dt_define_info.class_code in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material')
and dt_define_info.project_id = '0' then 100
when dt_define_info.class_code in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material')
and dt_define_info.project_id = dt_define_info.group_code then 200
when dt_define_info.class_code in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material')
and dt_define_info.project_id != dt_define_info.group_code then 300
when dt_define_info.class_code not in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material')
and dt_define_info.project_id = '0' then 400
when dt_define_info.class_code not in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material')
and dt_define_info.project_id = dt_define_info.group_code then 500
when dt_define_info.class_code not in ('project','building','floor','space','system','equipment','shaft','component','virtual','tool','material')
and dt_define_info.project_id != dt_define_info.group_code then 600
else 0 end)
select
from dt_define_type inner join dt_define_info on dt_define_info.class_code in (dt_define_type.code, dt_define_type.obj_type)
and dt_define_type.valid = 1 and dt_define_info.valid = 1
#{projectId}
where exists(select 1 from (
select dt_define_type.code class_code, dt_define_info.code code, max() max_show_level
from dt_define_type inner join dt_define_info on dt_define_info.class_code in (dt_define_type.code, dt_define_type.obj_type)
and dt_define_type.valid = 1 and dt_define_info.valid = 1
#{projectId}
group by dt_define_type.code, dt_define_info.code
) T
where T.class_code = dt_define_type.code and T.code = dt_define_info.code and T.max_show_level = )