`

复杂的sql

阅读更多
<select id="queryProducingPlanData" resultType="hashmap">
		SELECT T3.NAME AS PROJECT_NAME,
		T0.DOC_ITEMATTR2 DOC_ITEMATTR2,
		T0.ENG_SECTION,
		T0.TOTAL,
		T0.TOTAL_WEIGHT,
		NVL(T2.FINISH_NUM,0) AS FINISH_NUM,
		(NVL(T2.FINISH_NUM,0) - NVL(T1.STOCK_NUM,0) - NVL(T1.SEND_NUM,0)) as NO_TAG_NUM,
		NVL(T1.STOCK_NUM,0) AS STOCK_NUM,
		NVL(T1.SEND_NUM,0) AS SEND_NUM,
		NVL(T1.STOCK_WEIGHT,0) AS STOCK_WEIGHT,
		T0.PROJECT_ID
		FROM (SELECT DI.PROJECT_ID,
		DI.ENG_SECTION, MAX(DI.DOC_ITEMATTR2) DOC_ITEMATTR2,
		SUM(DI.UNIT_QTY) AS TOTAL, SUM(DI.WEIGHT*DI.UNIT_QTY) AS TOTAL_WEIGHT
		FROM DN_DOCUMENT_ITEMS DI
		INNER JOIN
		DN_DOCUMENT D
		ON D.DOC_NUM = DI.DOC_NUM
		AND D.DOC_SUBNDX = DI.DOC_SUBNDX
		WHERE D.CLIENT_ID = #{clientId,jdbcType=VARCHAR}
		AND D.LOCKED = 'Y'
		AND D.TYPECODE = 'RQ08'
		<if test="subType !=null and subType != ''">
			AND DI.SUB_TYPECODE = #{subType,jdbcType=VARCHAR}
		</if>
		<if test="projectId !=null and projectId != ''">
			AND DI.PROJECT_ID = #{projectId,jdbcType=DECIMAL}
		</if>
		<if test="engSection !=null and engSection != ''">
			AND DI.ENG_SECTION like '%'||#{engSection,jdbcType=VARCHAR}||'%'
		</if>
		GROUP BY DI.PROJECT_ID, DI.ENG_SECTION) T0
		LEFT JOIN (SELECT PP.PROJECT_ID,
		P.ATTR3,
		SUM(CASE WHEN P.STATUS_CODE
		IN('1010','1020') THEN P.WEIGHT ELSE 0 END) AS STOCK_WEIGHT,
		SUM(CASE WHEN P.STATUS_CODE IN('1010','1020') THEN 1 ELSE
		0 END) AS STOCK_NUM,
		SUM(CASE WHEN P.STATUS_CODE IN('1051','1052','1070','1261') THEN 1 ELSE 0 END) AS SEND_NUM
		FROM DN_PRODUCT
		P
		LEFT JOIN DN_PROJECT_PRODUCT PP
		ON P.ID = PP.PRODUCT_ID
		WHERE P.CLIENT_ID= #{clientId,jdbcType=VARCHAR}
		<if test="subType !=null and subType != ''">
			AND P.SUB_TYPECODE = #{subType,jdbcType=VARCHAR}
		</if>
		<if test="projectId !=null and projectId != ''">
			AND PP.PROJECT_ID = #{projectId,jdbcType=DECIMAL}
		</if>
		<if test="engSection !=null and engSection != ''">
			AND P.ATTR3 like '%'||#{engSection,jdbcType=VARCHAR}||'%'  
		</if>
		GROUP BY PP.PROJECT_ID, P.ATTR3) T1 ON T0.PROJECT_ID = T1.PROJECT_ID AND T0.ENG_SECTION=T1.ATTR3
		LEFT JOIN (SELECT
		PR.PROJECT_ID, PR.ENG_SECTION, COUNT(1) FINISH_NUM
		FROM DN_PRODUCT_REQUEST PR LEFT JOIN DN_PRODUCT P ON PR.PRODUCT_ID =
		P.ID
		WHERE PR.CLIENT_ID = #{clientId,jdbcType=VARCHAR}
		AND PR.REQ_TYPECODE = 'RQ11'
		AND PR.STATUS_CODE in('1010','1020')
		<if test="subType !=null and subType != ''">
			AND P.SUB_TYPECODE = #{subType,jdbcType=VARCHAR}
		</if>
		<if test="projectId !=null and projectId != ''">
			AND PR.PROJECT_ID = #{projectId,jdbcType=DECIMAL}
		</if>
		<if test="engSection !=null and engSection != ''">
			AND PR.ENG_SECTION like '%'||#{engSection,jdbcType=VARCHAR}||'%'
		</if>
		GROUP BY PR.PROJECT_ID, PR.ENG_SECTION) T2 ON T0.PROJECT_ID = T2.PROJECT_ID AND T0.ENG_SECTION=T2.ENG_SECTION
		LEFT JOIN
		DN_PROJECT T3 ON T0.PROJECT_ID = T3.ID ORDER BY PROJECT_NAME,ENG_SECTION
	</select>
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics