Compare commits

..

No commits in common. "3e3131c9a9bf36878418150a4933ff89b9c0b26c" and "61c8db15b51512eca9e4db6119b10680c95fff7e" have entirely different histories.

View File

@ -367,106 +367,61 @@
<select id="selectEstimateRoofCertVolKw" parameterType="com.interplug.qcast.biz.estimate.dto.EstimateRequest" resultType="String"> <select id="selectEstimateRoofCertVolKw" parameterType="com.interplug.qcast.biz.estimate.dto.EstimateRequest" resultType="String">
/* sqlid : com.interplug.qcast.biz.estimate.selectEstimateRoofCertVolKw */ /* sqlid : com.interplug.qcast.biz.estimate.selectEstimateRoofCertVolKw */
<![CDATA[ <![CDATA[
;WITH TCI AS ( SELECT SUM (
SELECT CAST (ISNULL(
TI.CIRCUIT_NO, CASE WHEN ISNULL(B.PQ_VOL, 0) = 0
TI.OBJECT_NO, THEN (CASE WHEN B.P_VOL < B.M_VOL THEN B.P_VOL ELSE B.M_VOL END)
TI.PLAN_NO, ELSE (CASE WHEN B.PQ_VOL < B.M_VOL THEN B.PQ_VOL ELSE B.M_VOL END)
TI.ITEM_ID, END, 0) AS NUMERIC(18, 3))) AS CERT_VOL_KW
TI.CIRCUIT_CFG, FROM (
COUNT(*) AS P_AMT SELECT DISTINCT
FROM T_PART_CIRCUIT_ITEM_ESTIMATE TI A.P_ITEM_ID
GROUP BY TI.CIRCUIT_NO, TI.OBJECT_NO, TI.PLAN_NO, TI.ITEM_ID, TI.CIRCUIT_CFG , (SELECT ROUND((TE.AMOUNT * CAST(ISNULL(TE.SPECIFICATION,0) AS FLOAT) / 1000), 4)
), FROM T_PART_ESTIMATE TE (NOLOCK)
Z AS ( WHERE TE.OBJECT_NO = A.OBJECT_NO AND TE.PLAN_NO = A.PLAN_NO AND TE.ITEM_ID = A.P_ITEM_ID) AS P_VOL
SELECT , TRI.QCAST_CUST_PRD_ID
TRI.ROOF_ITEM_NO, , (SELECT ROUND((TE.AMOUNT * CAST(ISNULL(TE.SPECIFICATION,0) AS FLOAT) / 1000), 4)
TRI.OBJECT_NO, FROM T_PART_ESTIMATE TE (NOLOCK)
TRI.PLAN_NO, WHERE TE.OBJECT_NO = A.OBJECT_NO AND TE.PLAN_NO = A.PLAN_NO AND TE.ITEM_ID = TRI.QCAST_CUST_PRD_ID) AS PQ_VOL
TRI.ITEM_ID AS M_ITEM_ID, , TRI.ITEM_ID AS M_ITEM_ID
TRI.ITEM_NO, , (SELECT ROUND((A.M_AMT * CAST(ISNULL(TE.SPECIFICATION,0) AS FLOAT) / 1000), 4)
TRI.SPECIFICATION AS M_SPEC, FROM T_PART_ESTIMATE TE (NOLOCK)
TRI.AMOUNT AS M_AMT, WHERE TE.OBJECT_NO = A.OBJECT_NO AND TE.PLAN_NO = A.PLAN_NO AND TE.ITEM_ID = TRI.ITEM_ID) AS M_VOL
TCI.ITEM_ID AS P_ITEM_ID, , A.M_AMT
TCI.P_AMT,
TCI.CIRCUIT_CFG
FROM T_PART_ROOF_ITEM_ESTIMATE TRI
INNER JOIN TCI
ON TRI.ROOF_ITEM_NO = TCI.CIRCUIT_NO
AND TRI.OBJECT_NO = TCI.OBJECT_NO
AND TRI.PLAN_NO = TCI.PLAN_NO
WHERE TRI.OBJECT_NO = #{objectNo}
AND TRI.PLAN_NO = #{planNo}
),
Z_CFG AS (
SELECT
Z.*,
CAST(ISNULL(SPLIT.M_1, 0) AS INT) AS M_1,
CAST(ISNULL(SPLIT.M_2, 0) AS INT) AS M_2,
CAST(ISNULL(SPLIT.M_3, 0) AS INT) AS M_3
FROM Z
CROSS APPLY (
SELECT
X.value('(/x[1]/v[1])[1]', 'VARCHAR(50)') AS M_1,
X.value('(/x[1]/v[2])[1]', 'VARCHAR(50)') AS M_2,
X.value('(/x[1]/v[3])[1]', 'VARCHAR(50)') AS M_3
FROM ( FROM (
SELECT CAST('<x><v>' + REPLACE(ISNULL(Z.CIRCUIT_CFG, ''), ',', '</v><v>') + '</v></x>' AS XML)
) A(X)
) SPLIT
),
Y AS (
SELECT SELECT
ZC.ROOF_ITEM_NO, TPC.OBJECT_NO
ZC.M_ITEM_ID, , TPC.PLAN_NO
ZC.M_SPEC, , TPC.ITEM_ID AS P_ITEM_ID
ZC.M_AMT, , TPC.CIRCUIT_CFG
(ZC.M_1 + ZC.M_2 + ZC.M_3) AS M_AMT2, ,(
ZC.P_ITEM_ID, SELECT SUM(CAST(T.Item AS INT))
TE.SPECIFICATION AS P_SPEC, FROM (
ZC.P_AMT, SELECT CAST('<X>' + REPLACE(TPC.CIRCUIT_CFG, ',', '</X><X>') + '</X>' AS XML) AS XMLDATA
(SELECT SPECIFICATION ) AS Sub
FROM T_PART_ROOF_ITEM_ESTIMATE CROSS APPLY (
WHERE OBJECT_NO = ZC.OBJECT_NO SELECT f.x.value('.', 'VARCHAR(MAX)') AS Item
AND PLAN_NO = ZC.PLAN_NO FROM Sub.XMLDATA.nodes('/X') AS f(x)
AND ROOF_ITEM_NO = (ZC.ROOF_ITEM_NO + 1)) AS M_SPEC2 ) AS T
FROM Z_CFG ZC WHERE T.Item <> ''
INNER JOIN T_PART_ESTIMATE TE ) AS M_AMT
ON ZC.OBJECT_NO = TE.OBJECT_NO FROM T_PART_CIRCUIT_ITEM_ESTIMATE TPC (NOLOCK)
AND ZC.PLAN_NO = TE.PLAN_NO WHERE
AND ZC.P_ITEM_ID = TE.ITEM_ID TPC.OBJECT_NO = #{objectNo}
), AND
X AS ( TPC.PLAN_NO = #{planNo}
SELECT )A
Y.M_ITEM_ID, LEFT OUTER JOIN (
Y.M_SPEC, SELECT TRI2.*, TRE.ROOF_SURFACE -- 필요한 컬럼들
(Y.M_AMT2 - Y.M_AMT) AS M_CNT, FROM T_PART_ROOF_ITEM_ESTIMATE TRI2 (NOLOCK)
ROUND((Y.M_AMT * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS M_VOL, INNER JOIN T_PART_ROOF_ESTIMATE TRE (NOLOCK)
ROUND((Y.M_AMT2 * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS M_VOL2, ON TRI2.OBJECT_NO = TRE.OBJECT_NO
ROUND(((Y.M_AMT2 - Y.M_AMT) * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) AS R_VOL, AND TRI2.PLAN_NO = TRE.PLAN_NO
CASE AND TRI2.ROOF_SURFACE_ID = TRE.ROOF_SURFACE_ID
WHEN Y.M_AMT < Y.M_AMT2 ) TRI
THEN ROUND((Y.M_AMT * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) ON A.OBJECT_NO = TRI.OBJECT_NO
ELSE AND A.PLAN_NO = TRI.PLAN_NO
ROUND((Y.M_AMT2 * CAST(ISNULL(Y.M_SPEC, 0) AS FLOAT) / 1000), 4) )B
END AS M_VOL_KW,
ROUND((Y.P_AMT * CAST(ISNULL(Y.P_SPEC, 0) AS FLOAT) / 1000), 4) AS PC_VOL_KW,
CASE
WHEN 0 < (Y.M_AMT2 - Y.M_AMT)
THEN ROUND(((Y.M_AMT2 - Y.M_AMT) * CAST(ISNULL(Y.M_SPEC2, 0) AS FLOAT) / 1000), 4)
ELSE 0
END AS M_VOL_KW2
FROM Y
)
SELECT
SUM(
CASE
WHEN (X.M_VOL_KW + X.M_VOL_KW2) < X.PC_VOL_KW THEN (X.M_VOL_KW + X.M_VOL_KW2)
WHEN X.PC_VOL_KW <= (X.M_VOL_KW + X.M_VOL_KW2) THEN X.PC_VOL_KW
ELSE 0
END
) AS CERT_VOL_KW
FROM X;
]]> ]]>
</select> </select>