Files
his/sql/fix_apply_dept_name_null.sql

46 lines
1.3 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 修复手术安排中申请科室名称为空的数据
-- 执行时间2026-03-31
-- 说明:填充 cli_surgery 表中 apply_dept_name 为空的记录
-- 1. 查看当前申请科室名称的填充情况
SELECT
COUNT(*) as total_count,
COUNT(apply_dept_id) as has_apply_dept_id_count,
COUNT(apply_dept_name) as has_apply_dept_name_count,
COUNT(*) - COUNT(apply_dept_name) as null_count
FROM public.cli_surgery
WHERE delete_flag = '0';
-- 2. 修复申请科室名称(关联 adm_organization 表)
UPDATE public.cli_surgery s
SET apply_dept_name = o.name
FROM public.adm_organization o
WHERE s.apply_dept_id = o.id
AND s.apply_dept_name IS NULL
AND s.delete_flag = '0';
-- 3. 对于 apply_dept_id 为空的记录,尝试从其他来源获取
-- 例如从就诊记录中查找科室信息
UPDATE public.cli_surgery s
SET apply_dept_name = d.dept_name
FROM public.adm_encounter e
JOIN public.adm_department d ON e.dept_id = d.id
WHERE s.encounter_id = e.id
AND s.apply_dept_name IS NULL
AND s.apply_dept_id IS NULL
AND s.delete_flag = '0';
-- 4. 再次查询,验证修复结果
SELECT
id,
surgery_no,
patient_name,
apply_dept_id,
apply_dept_name,
create_time
FROM public.cli_surgery
WHERE delete_flag = '0'
AND (apply_dept_name IS NULL OR apply_dept_name = '')
ORDER BY create_time DESC
LIMIT 20;