<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dhcc.finance.main.dao.FinancialGlorgbookMapper"> <resultMap id="BaseResultMap" type="com.dhcc.finance.main.model.CwBdAccsubjWeb"> <result column="SUBJCODE" jdbcType="VARCHAR" property="subjcode" /> <result column="SUBJNAME" jdbcType="VARCHAR" property="subjname" /> <result column="BALANCE" jdbcType="DECIMAL" property="balance" /> </resultMap> <select id="selectCwBdGlorgbookForDetail" resultMap="BaseResultMap"> SELECT a.SUBJCODE ,a.SUBJNAME, case when BALANORIENT ='1' then ifnull(sum(LOCALDEBITAMOUNT),0)-ifnull(sum(LOCALCREDITAMOUNT),0) else ifnull(sum(LOCALCREDITAMOUNT),0)-ifnull(sum(LOCALDEBITAMOUNT),0) end BALANCE FROM ( select SUBJCODE,SUBJNAME,BALANORIENT from CW_BD_ACCSUBJ where PK_SUBJSCHEME= (select PK_SUBJSCHEME from CW_BD_GLORGBOOK WHERE XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR} and USE_STATE ='1' ) and SUBJLEV!='0' and USE_STATE='1'and SUBJCODE not like '6%' and (SUBJCODE not like '4%' or SUBJCODE ='4001') ) a left JOIN ( select detail.SUBJCODE,sum(detail.LOCALDEBITAMOUNT) LOCALDEBITAMOUNT,sum(detail.LOCALCREDITAMOUNT) LOCALCREDITAMOUNT from (select PK_VOUCHER, USE_STATE from CW_GL_VOUCHER <![CDATA[ where PREPAREDATE<#{dateTime,jdbcType=VARCHAR} and PK_GLORGBOOK = (select PK_GLORGBOOK from CW_BD_GLORGBOOK where XTZXMBH = #{xtzxmbh,jdbcType=VARCHAR} and USE_STATE ='1' ) ) voucher ]]> inner join CW_GL_DETAIL detail on detail.PK_VOUCHER=voucher.PK_VOUCHER where detail.USE_STATE= '1' and voucher.USE_STATE ='1' GROUP BY detail.SUBJCODE order by null ) b ON b.SUBJCODE LIKE CONCAT(a.SUBJCODE,'%') where b.LOCALDEBITAMOUNT is not null and b.LOCALCREDITAMOUNT is not null GROUP BY a.SUBJCODE </select> </mapper>