쿼리에서 반환 된 결과 중 하나를 기반으로 첫 번째 필터에 표시된 하위 쿼리를 동적으로 만들려고 할 때 문제가 있습니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까? 첫 번째 하위 쿼리에서는 작동했습니다.SQL의 하위 쿼리 하위 쿼리 - DB2
(SELECT
MAX(MAX_DATE - MIN_DATE) AS NUM_CONS_DAYS
FROM
(
SELECT
MIN(TMP.D_DAT_INDEX_DATE) AS MIN_DATE,
MAX(TMP.D_DAT_INDEX_DATE) AS MAX_DATE,
SUM(INDEX_COUNT) AS SUM_INDEX
FROM
(
SELECT
D_DAT_INDEX_DATE,
INDEX_COUNT,
D_DAT_INDEX_DATE - (DENSE_RANK() OVER(ORDER BY D_DAT_INDEX_DATE)) DAYS AS G
FROM
DWH.MQT_SUMMARY_WATER_READINGS
WHERE
N_COD_METER_CNTX_KEY = 79094
) AS TMP
GROUP BY
TMP.G
ORDER BY
1
)) AS MAX_NUM_CONS_DAYS
은 위 내가 쿼리에서 CTXTKEY 또는 CTXT.N_COD_METER_CNTX_KEY로 123456을 대체하기 위해 노력하고있는 하위 쿼리입니다. 전체 코드는 다음과 같습니다. "MAX_NUM_CONS_DAYS"이전에 서브 쿼리에서보다 유의하십시오. 그러나 하나의 하위 쿼리 만있었습니다. 내가 얻고
SELECT
N_COD_WM_DWH_KEY,
V_COD_WM_SN_2,
N_COD_SP_ID,
CTXKEY,
V_COD_MIU_SN,
N_COD_POD,
MIU_CAT,
V_COD_SITR_ASSOCIATED,
WO_INST_DATE,
WO_MIU_CAT,
DAYSRECEIVED3,
MAX_NUM_CONS_DAYS,
(CASE WHEN (DAYSRECEIVED3 = 3) THEN 'Y' ELSE 'N' END) AS GREEN,
(CASE WHEN (DAYSRECEIVED3 < 3 AND DAYSRECEIVED3 > 0) THEN 'Y' ELSE 'N' END) AS BLUE,
(CASE WHEN (DAYSRECEIVED3 = 0 AND MAX_NUM_CONS_DAYS >= 5) THEN 'Y' ELSE 'N' END) AS ORANGE,
(CASE WHEN (DAYSRECEIVED3 = 0 AND MAX_NUM_CONS_DAYS BETWEEN 1 and 4) THEN 'Y' ELSE 'N' END) AS RED
FROM
(
SELECT
WMETER.N_COD_WM_DWH_KEY,
WMETER.V_COD_WM_SN_2,
WMETER.N_COD_SP_ID,
CTXT.N_COD_METER_CNTX_KEY AS CTXKEY,
CTXT.V_COD_MIU_SN,
CTXT.N_COD_POD,
MIU.N_COD_MIU_CATEGORY AS MIU_CAT,
CTXT.V_COD_SITR_ASSOCIATED,
T1.D_DAT_PLAN_INST AS WO_INST_DATE,
T1.N_COD_MIU_CATEGORY AS WO_MIU_CAT,
(SELECT COUNT(DISTINCT D_DAT_INDEX_DATE) FROM DWH.MQT_SUMMARY_WATER_READINGS WHERE (N_COD_METER_CNTX_KEY = CTXT.N_COD_METER_CNTX_KEY) AND D_DAT_INDEX_DATE BETWEEN ('2013-07-10') AND ('2013-07-12')) AS DAYSRECEIVED3,
(SELECT
MAX(MAX_DATE - MIN_DATE) AS NUM_CONS_DAYS
FROM
(
SELECT
MIN(TMP.D_DAT_INDEX_DATE) AS MIN_DATE,
MAX(TMP.D_DAT_INDEX_DATE) AS MAX_DATE,
SUM(INDEX_COUNT) AS SUM_INDEX
FROM
(
SELECT
D_DAT_INDEX_DATE,
INDEX_COUNT,
D_DAT_INDEX_DATE - (DENSE_RANK() OVER(ORDER BY D_DAT_INDEX_DATE)) DAYS AS G
FROM
DWH.MQT_SUMMARY_WATER_READINGS
WHERE
N_COD_METER_CNTX_KEY = 79094
) AS TMP
GROUP BY
TMP.G
ORDER BY
1
)) AS MAX_NUM_CONS_DAYS
FROM DWH.DWH_WATER_METER AS WMETER
LEFT JOIN DWH.DWH_WMETER_CONTEXT AS CTXT
ON WMETER.N_COD_WM_DWH_KEY = CTXT.N_COD_WM_DWH_KEY
LEFT JOIN DWH.DWH_MIU AS MIU
ON CTXT.V_COD_MIU_SN = MIU.V_COD_MIU_SN
LEFT JOIN
(SELECT V_COD_CORR_WAT_METER_SN, D_DAT_PLAN_INST, N_COD_MIU_CATEGORY
FROM DWH.DWH_ORDER_MANAGEMENT_FACT
JOIN DWH.DWH_MIU
ON DWH.DWH_ORDER_MANAGEMENT_FACT.V_COD_MIU_SN = DWH.DWH_MIU.V_COD_MIU_SN
) AS T1
ON WMETER.V_COD_WM_SN_2 = T1.V_COD_CORR_WAT_METER_SN
WHERE
(V_COD_SITR_ASSOCIATED = 'X')
AND ((MIU.N_COD_MIU_CATEGORY <> 4) OR ((MIU.N_COD_MIU_CATEGORY IS NULL) AND ((T1.N_COD_MIU_CATEGORY <> 4 ) OR (T1.N_COD_MIU_CATEGORY IS NULL ))))
)
오류는 다음과 같습니다
오류 코드 : -204, SQL 상태 : 42704
감사합니다. mustaccio 하위 쿼리에서 참조하는 데 제한이 없습니다. – maldman