0
以下のコードを書きましたが、期待通りに動作していますが時間がかかりすぎます。case文の条件が複数ある場合
`SELECT COUNT(SRC.DVC_ID),'AUDIO' AS FEATURE,'PDPN ' AS COL_NAME, 'DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY ' AS SRC_TABLE,'DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT' AS TGT_TABLE
FROM DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY SRC
JOIN DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT TGT
ON SRC.DVC_ID=TGT.DVC_ID AND SRC.PDPN<>TGT.PDPN
WHERE TGT.CUR_REC_FL='Y' AND SRC.AUDO_STS IN('A','S') AND SRC.AUDO_PROD_ID IS NOT NULL AND UPPER(SRC.DELV_METH)<>'TELEMATICS'
UNION ALL
SELECT COUNT(SRC.DVC_ID),'AUDIO' AS FEATURE,'PSN' AS COL_NAME, 'DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY ' AS SRC_TABLE,'DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT' AS TGT_TABLE
FROM DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY SRC
JOIN DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT TGT
ON SRC.DVC_ID=TGT.DVC_ID AND SRC.PSN<>TGT.PSN
WHERE TGT.CUR_REC_FL='Y' AND SRC.AUDO_STS IN('A','S') AND SRC.AUDO_PROD_ID IS NOT NULL AND UPPER(SRC.DELV_METH)<>'TELEMATICS'
UNION ALL
SELECT COUNT(SRC.DVC_ID),'AUDIO' AS FEATURE,'PTNR_ID' AS COL_NAME, 'DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY ' AS SRC_TABLE,'DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT' AS TGT_TABLE
FROM DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY SRC
JOIN DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT TGT
ON SRC.DVC_ID=TGT.DVC_ID AND SRC.PTNR_ID<>TGT.PTNR_ID
WHERE TGT.CUR_REC_FL='Y' AND SRC.AUDO_STS IN('A','S') AND SRC.AUDO_PROD_ID IS NOT NULL AND UPPER(SRC.DELV_METH)<>'TELEMATICS'
UNION ALL
SELECT COUNT(SRC.DVC_ID),'AUDIO' AS FEATURE,'PTNR_NM' AS COL_NAME, 'DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY ' AS SRC_TABLE,'DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT' AS TGT_TABLE
FROM DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY SRC
JOIN DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT TGT
ON SRC.DVC_ID=TGT.DVC_ID AND SRC.PTNR_NM<>TGT.PTNR_NM
WHERE TGT.CUR_REC_FL='Y' AND SRC.AUDO_STS IN('A','S') AND SRC.AUDO_PROD_ID IS NOT NULL AND UPPER(SRC.DELV_METH)<>'TELEMATICS'
UNION ALL
SELECT COUNT(SRC.DVC_ID),'AUDIO' AS FEATURE,'SEC_PTNR_ID' AS COL_NAME, 'DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY ' AS SRC_TABLE,'DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT' AS TGT_TABLE
FROM DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY SRC
JOIN DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT TGT
ON SRC.DVC_ID=TGT.DVC_ID AND SRC.SEC_PTNR_ID<>TGT.SEC_PTNR_ID
WHERE TGT.CUR_REC_FL='Y' AND SRC.AUDO_STS IN('A','S') AND SRC.AUDO_PROD_ID IS NOT NULL AND UPPER(SRC.DELV_METH)<>'TELEMATICS' `
私は以下のようにクエリを変更しましたが、出力が間違っています。
SELECT * FROM(
SELECT COUNT(SRC.DVC_ID)OVER(PARTITION BY COL_NAME) AS DVC_ID_CNT,
'TRFC' AS FEATURE,
CASE WHEN SRC.PDPN<>TGT.PDPN THEN 'PDPN '
WHEN SRC.PSN<>TGT.PSN THEN 'PSN '
WHEN SRC.PTNR_ID<>TGT.PTNR_ID THEN 'PTNR_ID'
WHEN SRC.SEC_PTNR_ID<>TGT.SEC_PTNR_ID THEN 'SEC_PTNR_ID'
WHEN SRC.SEC_PTNR_ID<>TGT.SEC_PTNR_ID THEN 'SEC_PTNR_ID' ELSE '0' END COL_NAME
,'DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY' AS SRC_TABLE,'DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT' AS TGT_TABLE
FROM DP_VEDW_TRM.V_DEVICE_VIEW_SUMMARY SRC
JOIN DP_VEDW_SRC_MDB_NGN.DVC_SUM_AUDO_VIEW_HIST_PT TGT ON SRC.DVC_ID=TGT.DVC_ID
WHERE TGT.CUR_REC_FL='Y' AND SRC.AUDO_STS IN('A','S') AND SRC.AUDO_PROD_ID IS NOT NULL AND UPPER(SRC.DELV_METH)<>'TELEMATICS'
AND COL_NAME<>'0'
)A GROUP BY 1,2,3,4,5
お勧めします。 ありがとうございます