使用 SQL 查询 报没有当前游标,使用到了 sys_connect_by_path
为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【GBase版本】:GBase8sV8.8_TL_3.5.1_3_6a4e30
【操作系统】:
【CPU】:
【问题描述】*: select
pm.all_sample_no as sampleLabNo, ,sm.sample_count as collectNum
from person_info pi left join CONSIGNMENT c on c.id = pi.CONSIGNMENT_ID
left join CASE_INFO CI ON CI.ID = C.EVENT_ID
left join LAB_INFO li on pi.LAB_ID = li.id left join (select spm.person_object_id ,count(si.id) as sample_count from sample_info si,sample_person_map spm
where si.id = spm.sample_id
and si.delete_flag = 0
group by spm.person_object_id) sm on pi.id = sm.person_object_id
left join (select pid, max(sys_connect_by_path(sln, ';')) all_sample_no
from (select pid,
sln,
(row_number()
over(order by pid, sln desc) + dense_rank()
over(order by pid)) rn,
max(sln) over(partition by pid) sln1
from (select spm.person_object_id as pid,
coalesce(si.sample_lab_no, ' ') as sln
from sample_person_map spm
left join sample_info si on si.id = spm.sample_id
where si.delete_flag = 0))
start with sln = sln1
connect by rn - 1 = prior rn
group by pid) pm on pi.id = pm.pid
评论
2.oracle的大部分功能确实已经兼容了,如果还有不支持的,欢迎提供用例,我们继续去做兼容。
表:
sample_person_map
sample_info
CASE_INFO
LAB_INFO
person_info
CONSIGNMENT
select pid, sys_connect_by_path(sln, ';') all_sample_no
from (select pid,
sln,
(row_number()
over(order by pid, sln desc) + dense_rank()
over(order by pid)) rn,
max(sln) over(partition by pid) sln1
from (select spm.person_object_id as pid,
coalesce(si.sample_lab_no, ' ') as sln
from sample_person_map spm
left join sample_info si on si.id = spm.sample_id
where si.delete_flag = 0))
start with sln = sln1
connect by rn - 1 = prior rn
into temp tmp1;
select pid,max(all_sample_no) all_sample_no
from tmp1
group by pid
into temp tmp2;
select
pm.all_sample_no as sampleLabNo,sm.sample_count as collectNum
from person_info pi left join CONSIGNMENT c on c.id = pi.CONSIGNMENT_ID
left join CASE_INFO CI ON CI.ID = C.EVENT_ID
left join LAB_INFO li on pi.LAB_ID = li.id
left join (select spm.person_object_id ,count(si.id) as sample_count from sample_info si,sample_person_map spm
where si.id = spm.sample_id
and si.delete_flag = 0
group by spm.person_object_id) sm on pi.id = sm.person_object_id
left join tmp2 pm on pi.id = pm.pid
;
SELECT
r.*
FROM
(
SELECT
pid,
SYS_CONNECT_BY_PATH( sln, ';' ) all_sample_no
FROM
(
SELECT
pid,
sln,
(
ROW_NUMBER() OVER(
ORDER BY
pid,
sln DESC
)+ DENSE_RANK() OVER(
ORDER BY
pid
)
) rn,
MAX( sln ) OVER(
PARTITION BY pid
) sln1
FROM
(
SELECT
spm.person_object_id AS pid,
COALESCE(
si.sample_lab_no,
' '
) AS sln
FROM
sample_person_map spm
LEFT JOIN sample_info si ON
si.id = spm.sample_id
WHERE
si.delete_flag = 0
)
) START WITH sln = sln1 CONNECT BY rn - 1 = PRIOR rn INTO
temp tmp1;
SELECT
pid,
MAX( all_sample_no ) all_sample_no
FROM
tmp1
GROUP BY
pid INTO
temp tmp2;
SELECT
pm.all_sample_no AS sampleLabNo,
pi.id,
pi.init_server_no,
pi.lab_id,
pi.consignment_id,
pi.consign_org_code,
pi.input_category,
pi.db_category,
pi.person_no,
pi.person_name,
pi.generate_mode,
pi.alias,
pi.gender,
pi.birth_datetime,
pi.age,
pi.id_card_no,
pi.certificate_type,
pi.certificate_no,
pi.race,
pi.nationality,
pi.mobile_phone,
pi.home_phone,
pi.email,
pi.education_level,
pi.identity,
pi.occupation,
pi.native_place_regionalism,
pi.native_place_addr,
pi.residence_regionalism,
pi.residence_addr,
pi.fingerprint_no,
pi.blood_type,
pi.height,
pi.bodily_form,
pi.birth_date_from,
pi.birth_date_to,
pi.rough_age,
pi.roughly_birthdate,
pi.missing_type,
pi.missing_time,
pi.missing_place,
pi.extrinsic_sign,
pi.special_sign,
pi.involved_case_name,
pi.involved_case_no,
pi.case_property,
pi.prison_type,
pi.prison_no,
pi.death_flag,
pi.delete_flag,
pi.index_flag,
pi.transfer_flag,
pi.transfer_user,
pi.transfer_datetime,
pi.data_source,
pi.remark,
pi.create_user,
pi.create_datetime,
pi.update_user,
pi.update_datetime,
pi.person_label,
pi.abduct_type,
pi.if_sampling,
pi.sampling_datetime,
pi.sampling_regionalism,
pi.if_testdna,
pi.test_datetime,
pi.test_regionalism,
pi.family_no,
pi.family_name,
pi.hiredate,
pi.dg_case_name,
pi.if_finger,
pi.dg_data_type,
pi.post,
pi.communication_address,
pi.unit,
pi.guardian_date,
pi.communication_regionalism,
pi.memory,
pi.other_info,
pi.missing_place_regionalism,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.DB_CATEGORY = sd.dict_key
AND sd.dict_category = 'PERSON_CATEGORY'
) AS dbCategoryName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
pi.INPUT_CATEGORY = sd.dict_key
AND sd.dict_category = 'PERSON_CATEGORY'
) AS inputCategoryName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.GENDER = sd.dict_key
AND sd.dict_category = 'GENDER'
) AS genderName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.EDUCATION_LEVEL = sd.dict_key
AND sd.dict_category = 'EDUCATION_LEVEL'
) AS educationLevelName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.NATIONALITY = sd.dict_key
AND sd.dict_category = 'COUNTRY'
) AS nationalityName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.RACE = sd.dict_key
AND sd.dict_category = 'NATIONALITY'
) AS raceName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.CERTIFICATE_TYPE = sd.dict_key
AND sd.dict_category = 'CERTIFICATE_TYPE'
) AS certificateTypeName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.CASE_PROPERTY = sd.dict_key
AND sd.dict_category = 'CASE_PROPERTY'
) AS casePropertyName,
(
SELECT
sd.dict_value1
FROM
sys_dict sd
WHERE
PI.PRISON_TYPE = sd.dict_key
AND sd.dict_category = 'PRISON_TYPE'
) AS prisonTypeName,
CI.CASE_NAME AS caseName,
CI.CASE_BRIEF AS caseBrief,
C.ACCEPT_ORG_NAME AS acceptOrgName,
C.CONSIGN_ORG_REGIONALISM AS consignOrgRegionalism,
C.CONSIGN_ORG_NAME AS consignOrgName,
C.CONSIGNER_NAME AS consignerName,
C.CONSIGNER_NAME2 AS consignerName2,
C.ACCEPTOR_NAME AS acceptorName,
C.CONSIGN_DATETIME AS consignDate,
li.LAB_REGIONALISM AS labRegionalism,
sm.sample_count AS collectNum
FROM
person_info pi
LEFT JOIN CONSIGNMENT c ON
c.id = pi.CONSIGNMENT_ID
LEFT JOIN CASE_INFO CI ON
CI.ID = C.EVENT_ID
LEFT JOIN LAB_INFO li ON
pi.LAB_ID = li.id
LEFT JOIN(
SELECT
spm.person_object_id,
COUNT( si.id ) AS sample_count
FROM
sample_info si,
sample_person_map spm
WHERE
si.id = spm.sample_id
AND si.delete_flag = 0
GROUP BY
spm.person_object_id
) sm ON
pi.id = sm.person_object_id
LEFT JOIN tmp2 pm ON
pi.id = pm.pid
WHERE
1 = 1
AND pi.CONSIGNMENT_ID ='996252404FE2314BA4BD50CBD245B671'
AND(
pi.GENERATE_MODE ='1'
)
ORDER BY
pi.CREATE_DATETIME
) r
WHERE
1 = 1
'DNA信息' as dataTypeName,
(select count(1)
from transfer_record tr
where tr.transfer_data_type in ('1', '13')
and tr.transfer_data_status in ('1', '3')) as waitingCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type in ('1', '13')
and tr.transfer_data_status = '5') as sendingCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type in ('1', '13')
and tr.transfer_data_status = '2') as successCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type in ('1', '13')
and tr.transfer_data_status = '4') as failCount
from dual
union all
select '4' as dataType,
'实验室用户信息' as dataTypeName,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '4'
and tr.transfer_data_status in ('1', '3')) as waitingCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '4'
and tr.transfer_data_status = '5') as sendingCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '4'
and tr.transfer_data_status = '2') as successCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '4'
and tr.transfer_data_status = '4') as failCount
from dual
union all
select '5' as dataType,
'实验室通讯消息' as dataTypeName,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '5'
and tr.transfer_data_status in ('1', '3')) as waitingCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '5'
and tr.transfer_data_status = '5') as sendingCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '5'
and tr.transfer_data_status = '2') as successCount,
(select count(1)
from transfer_record tr
where tr.transfer_data_type = '5'
and tr.transfer_data_status = '4') as failCount
from dual 这种查出来的 dataTypeName 为什么会有空格,dataTypeName值短的会自动有空格
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25044
- 42023-09-25浏览数:18519
- 52020-05-11浏览数:17526