<?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="pwc.taxtech.atms.dao.DimensionValueOrgMapper"> <resultMap id="UnionDimensionValueOrg" type="pwc.taxtech.atms.dto.dimension.UnionDimensionValueOrg"> <id column="ID" jdbcType="VARCHAR" property="id"/> <result column="DIMENSION_VALUE_ID" jdbcType="VARCHAR" property="dimensionValueId"/> <result column="ORGANIZATION_ID" jdbcType="VARCHAR" property="organizationId"/> <result column="DIMENSION_ID" jdbcType="VARCHAR" property="dimensionId"/> <result column="DIMENSION_VALUE_NAME" jdbcType="VARCHAR" property="dimensionValueName"/> </resultMap> <select id="selectUnionDimensionValueOrgByDimension" parameterType="pwc.taxtech.atms.dto.DimensionParamDto" resultMap="UnionDimensionValueOrg"> SELECT * FROM ( SELECT #{organizationStructureId} AS ID, structure_id AS DIMENSION_VALUE_ID, id AS ORGANIZATION_ID FROM organization UNION SELECT #{businessUnitId} AS ID, business_unit_id AS DIMENSION_VALUE_ID, id AS ORGANIZATION_ID FROM organization UNION SELECT #{areaId} AS ID, area_id AS DIMENSION_VALUE_ID, id AS ORGANIZATION_ID FROM organization UNION SELECT id as ID, dimension_value_id as DimensionValueID, organization_id as OrganizationID FROM dimension_value_org ) Q JOIN ( SELECT id AS DIMENSION_VALUE_ID, name AS DIMENSION_VALUE_NAME, is_active AS IS_ACTIVE, #{organizationStructureId} AS DIMENSION_ID, create_time AS CREATE_TIME, update_time AS UPDATE_TIME FROM organization_structure WHERE is_active=1 UNION SELECT id AS DIMENSION_VALUE_ID, name AS DIMENSION_VALUE_NAME, is_active AS IS_ACTIVE, #{businessUnitId} AS DIMENSION_ID, create_time AS CREATE_TIME, update_time AS UPDATE_TIME FROM business_unit WHERE is_active=1 UNION SELECT id AS DIMENSION_VALUE_ID, name AS DIMENSION_VALUE_NAME, is_active AS IS_ACTIVE, #{areaId} AS DIMENSION_ID, SYSDATE() AS CREATE_TIME, SYSDATE() AS UPDATE_TIME FROM area WHERE is_active=1 UNION SELECT id AS DIMENSION_VALUE_ID, name AS DIMENSION_VALUE_NAME, is_active AS IS_ACTIVE, dimension_id AS DIMENSION_ID, create_time AS CREATE_TIME, update_time AS UPDATE_TIME FROM dimension_value WHERE is_active=1 ) P ON P.dimension_value_id = Q.dimension_value_id JOIN dimension R ON R.is_active = 1 AND P.dimension_id = R.id </select> </mapper>