复杂的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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值