SELECT AA.sfzh AS D_GRDABH,AA.happentime,
bl.ZSTEXT AS Y_ZZ,
(bl.TZTEXT ||','||bl.XBSTEXT
||','||bl.JWSTEXT||','||bl.GMSTEXT ||','||bl.JKZD
||','||bl.SSY ||'/'||bl.SZY) AS Y_JCJG,
YS AS Y_JZYS,ZDXX.ZDMC AS Y_ZDJL,SYDW.MC AS YYBM,
AA.Y_CLCS,'0' AS qdqxz,'100' AS wzd,'HIS' AS jkbs
FROM (
SELECT yybm,sfzh,jzlsh,happentime,
--listagg(yyqk,'</br>') within group(order by jzlsh) AS Y_CLCS,
--这里的listagg函数有长度限制2000,用xmlagg函数替代
xmlagg(xmlparse(content yyqk||'</br>' wellformed) order by jzlsh).getclobval() AS Y_CLCS,
YS FROM (
SELECT
MZ.YYBM,
MZ.JZLSH,
DA.SFZH /*身份证号*/,
MZ.YS,
to_char(MZ.RQ,'YYYY-MM-DD') AS happentime,
(( CASE MZ.LBBZ
WHEN '3' THEN
XM.MC
ELSE
DM.TYM
END ) /*药品/项目名称*/ ||','||MZ.ZL /*药品用量*/ || ZLDW.MC /*药品用量单位*/
||','||YYTJ.MC /*药品用药方式*/||','||MZ.MCJL /*每次剂量*/
|| JLDW.MC /*剂量单位*/ ||','|| DM.YPGG /*药品规格*/) AS yyqk
FROM YW_MZYS_MZYZ MZ
LEFT JOIN A DM ON MZ.BM = DM.YPBM
LEFT JOIN B XM ON MZ.BM = XM.BM
LEFT JOIN C YYTJ ON MZ.GYFS = YYTJ.BM AND MZ.YYBM = YYTJ.YYBM
LEFT JOIN D JLDW ON JLDW.DLBM = '0021' AND JLDW.BM = MZ.JLDW
LEFT JOIN E ZLDW ON ZLDW.DLBM = '0020' AND ZLDW.BM = MZ.ZLDW
LEFT JOIN H DA ON DA.YYBM = MZ.YYBM AND DA.KH = MZ.KH
WHERE MZ.SKLSH IS NOT NULL AND DA.sfzh IS NOT NULL
and mz.rq between to_date(to_char(sysdate,'yyyy')||'-01-01','yyyy-mm-dd') and to_date(to_char(sysdate,'yyyy-mm-dd'),'yyyy-mm-dd')
) GROUP BY yybm,sfzh,jzlsh,happentime,YS
) AA
LEFT JOIN N bl ON bl.JZLSH = AA.JZLSH
LEFT JOIN (SELECT JG.JZLSH,ICD.MC AS ZDMC FROM Q JG LEFT JOIN W ICD ON ICD.BM = JG.ZDBM WHERE JG.ZDLX = '1' AND ICD.MC IS NOT null) ZDXX
ON ZDXX.JZLSH = AA.JZLSH
LEFT JOIN U SYDW ON SYDW.BM = AA.YYBM
Oracle 11 listagg拼接字符串过长的替代函数
最新推荐文章于 2024-05-07 14:11:46 发布