select
COUNT(*) AS 次数,
TO_CHAR(QJKSSJ,'YYYY-MM') as KS,XM,DW,SY,
SUM(
CASE
WHEN TO_CHAR(QJKSSJ,'YYYY-MM') =TO_CHAR(QJJSSJ,'YYYY-MM') THEN TS
ELSE
TO_CHAR(last_day(add_months(QJKSSJ, 0)) - QJKSSJ +1) END
) as 天数合计
from DM_QJHZ WHERE 1=1
${if(len(YF)==0,"","AND TO_CHAR(QJKSSJ,'YYYY-MM')='"+YF+"'")}
${if(len(DW)==0,"","AND DW='"+DW+"'")}
${if(len(XM)==0,"","AND XM='"+XM+"'")}
group by XM,SY,DW,TO_CHAR(QJKSSJ,'YYYY-MM')
union all
select
COUNT(*) as 次数,
TO_CHAR(QJJSSJ,'YYYY-MM') as KS,XM,DW,SY,
SUM(
CASE
WHEN TO_CHAR(QJKSSJ,'YYYY-MM') =TO_CHAR(QJJSSJ,'YYYY-MM') THEN TS
ELSE
TO_CHAR(QJJSSJ- trunc(QJJSSJ,'MONTH')+1) END
) as 天数合计
from DM_QJHZ
WHERE TO_CHAR(QJKSSJ,'YYYY-MM') !=TO_CHAR(QJJSSJ,'YYYY-MM')
${if(len(YF)==0,"","AND TO_CHAR(QJJSSJ,'YYYY-MM')='"+YF+"'")}
${if(len(DW)==0,"","AND DW='"+DW+"'")}
${if(len(XM)==0,"","AND XM='"+XM+"'")}
group by XM,SY,DW,TO_CHAR(QJJSSJ,'YYYY-MM')
union all
select
COUNT(*) as 次数,
'${YF}' as KS,XM,DW,SY,
SUM(
TO_CHAR(last_day(add_months(TO_DATE('${YF}' ,'YYYY-MM'), 0)) - trunc(TO_DATE('${YF}','YYYY-MM'),'MONTH')+1)
) as 天数合计
from DM_QJHZ
WHERE 1=1
${if(len(YF)==0,"","AND TO_CHAR(QJKSSJ,'YYYY-MM')<'"+YF+"' AND TO_CHAR(QJJSSJ,'YYYY-MM') >'"+YF+"'")}
${if(len(DW)==0,"","AND DW='"+DW+"'")}
${if(len(XM)==0,"","AND XM='"+XM+"'")}
group by XM,SY,DW,TO_CHAR(QJJSSJ,'YYYY-MM')