获取所有非空字符串,并排序
sql
select BED_CODE from XJX_HIS.HIS_BED t
ORDER BY CASE
WHEN t.BED_CODE = '' THEN 1
WHEN REGEXP_LIKE(t.BED_CODE, '^\d+$') THEN CAST(t.BED_CODE AS INTEGER)
ELSE 999999
END,
CASE
WHEN REGEXP_LIKE(t.BED_CODE, '^\d+$') THEN 0
ELSE 1
END,
t.BED_CODE根据子节点递归查找父节点
Oracle 达梦 Sql
sql
SELECT SCODE, PARENT_CODE, SNAME, DATA_SPELL, DATA_SNO
FROM XJX_STD.DICT_WS_363_445_DIR
START WITH SCODE = 'WST363_01_00' -- 从指定节点开始
CONNECT BY PRIOR PARENT_CODE = SCODE -- 递归查找父节点
ORDER BY LEVEL DESC; -- 按层级倒序排列,最上级节点在最前
--- 查询所有叶子节点
select CONNECT_BY_ISLEAF, t.SCODE, t.SNAME, LEVEL
from xjx_std.DICT_WS_363_445_DIR t
start with t.PARENT_CODE is null
connect by t.PARENT_CODE = prior t.SCODE关联查询join 子表多条,只关联其中一条
sql
select V.VISIT_ID,count(V.VISIT_ID) from XJX_HIS.INP_VISIT V
left join XJX_HIS.INP_VISIT_BLOOD_OXYGEN_RECORD B on V.VISIT_ID = B.VISIT_ID and b.DEL_STATUS != 1 -- 血氧饱和度
left join XJX_HIS.HIS_BED H on V.VISIT_BED_ID = H.BED_ID -- 病床信息
LEFT JOIN XJX_MDR.BASE_EMP_INFO BE ON V.NURSE_USER_ID = BE.USER_ID -- 护士信息
JOIN (SELECT TRANSFER.*,
ROW_NUMBER() OVER (PARTITION BY TRANSFER.VISIT_ID ORDER BY TRANSFER.OUT_TIME DESC) AS RN
FROM XJX_HIS.INP_VISIT_DEPT_TRANSFER TRANSFER
WHERE TRANSFER.DEL_STATUS = 0
AND TRANSFER.TRANSFER_STATUS = 1
) DT ON DT.VISIT_ID = V.VISIT_ID AND DT.RN = 1 -- 转科记录
group by V.VISIT_ID