2017-03-10 9 views
-2

以下のクエリにアウター・ジョインを追加する必要があります。SQLはSQL以下で

は、これまでのところ私は

select local_code from HSBC_LOCAL_INVOL_PARTY 
h join t_cdr T2 
on T2.counterparty_new = h.entity_code 

を追加しようとしましたが、それは動作しません。最後に明示的な外部結合が必要です。助けてください

SELECT 
T2.counterparty_new, 
T2.bis_entity_type_original, 
T2.counterparty_new_desc, 
T2.counterparty_new_attribute_6, 
T2.method_original, 
T2.netting_agreement_reference, 
T2.internal_rating_new, 
T2.counterparty_type_original, 
T2.obligor_grade_new, 
T2.pd_pre_floor_new, 
T2.pd_new, 
T2.lgd, 
T2.rwa 
from t_cdr T2, 
(
SELECT * FROM (
SELECT 
FINAL.FILTER_MARKER, 
FINAL.entity_code 
FROM (
SELECT 
FILTER_POP.entity_code, 
FILTER_POP.FILTER_MARKER 
FROM (
SELECT 
CASE 
WHEN CONCAT(Dlgd,unfloored_lgd) IS NOT NULL 
THEN 'EXCLUDE' 
WHEN CONCAT(Dlgd,unfloored_lgd) IS NULL 
THEN 'INCLUDE' 
END AS FILTER_MARKER, 
entity_code, 
Dlgd, 
unfloored_lgd 
FROM 
HSBC_LOCAL_INVOL_PARTY 
WHERE 
((HSBC_LOCAL_INVOL_PARTY.entity_code) NOT LIKE '%DUM%') 
AND 
((HSBC_LOCAL_INVOL_PARTY.entity_code) NOT LIKE '%HSBC%') 
) FILTER_POP 
GROUP BY 
FILTER_POP.entity_code, 
FILTER_POP.FILTER_MARKER) FINAL 
GROUP BY 
FINAL.FILTER_MARKER, 
FINAL.entity_code 
ORDER BY 
FINAL.entity_code) 
PIVOT 
(
COUNT(FILTER_MARKER) 
FOR FILTER_MARKER IN ('INCLUDE' AS INCLUDE,'EXCLUDE' AS EXCLUDE) 
) 
WHERE INCLUDE = 1 AND EXCLUDE = 0 
) ENTITY_FILTER 
WHERE ENTITY_FILTER.entity_code = T2.counterparty_new 
AND T2.method_original = 'ADV' 
ORDER BY T2.rwa DESC 
+5

問題を最小限に抑えます。 (スクロールする必要がある場合は大きすぎます...) – jarlh

+8

「Sombody else's problem」のステッカーを貼るだけです。今本当に - あなたはこの質問を読むことができますか? –

+0

完璧な質問をする方法について知っているリンクを参照してください:https://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/ – TheGameiswar

答えて

0

解決済み:最後の数行を見てください。しばらくしてから、パフォーマンスのために最適化しました。

SELECT 
T2.counterparty_new, 
T2.bis_entity_type_original, 
T2.counterparty_new_desc, 
T2.counterparty_new_attribute_6, 
T2.method_original, 
T2.netting_agreement_reference, 
T2.internal_rating_new, 
T2.counterparty_type_original, 
T2.obligor_grade_new, 
T2.pd_pre_floor_new, 
T2.pd_new, 
T2.lgd, 
HSBC_LOCAL_INVOL_PARTY.local_code, 
T2.rwa 
from t_cdr T2, 
(
SELECT * FROM (
SELECT 
FINAL.FILTER_MARKER, 
FINAL.entity_code 
FROM (
SELECT 
FILTER_POP.entity_code, 
FILTER_POP.FILTER_MARKER 
FROM (
SELECT 
CASE 
WHEN CONCAT(Dlgd,unfloored_lgd) IS NOT NULL 
THEN 'EXCLUDE' 
WHEN CONCAT(Dlgd,unfloored_lgd) IS NULL 
THEN 'INCLUDE' 
END AS FILTER_MARKER, 
entity_code, 
Dlgd, 
unfloored_lgd 
FROM 
HSBC_LOCAL_INVOL_PARTY 
WHERE 
((HSBC_LOCAL_INVOL_PARTY.entity_code) NOT LIKE '%DUM%') 
AND 
((HSBC_LOCAL_INVOL_PARTY.entity_code) NOT LIKE '%HSBC%') 
) FILTER_POP 
GROUP BY 
FILTER_POP.entity_code, 
FILTER_POP.FILTER_MARKER) FINAL 
GROUP BY 
FINAL.FILTER_MARKER, 
FINAL.entity_code 
ORDER BY 
FINAL.entity_code) 
PIVOT 
(
COUNT(FILTER_MARKER) 
FOR FILTER_MARKER IN ('INCLUDE' AS INCLUDE,'EXCLUDE' AS EXCLUDE) 
) 
WHERE INCLUDE = 1 AND EXCLUDE = 0 
) ENTITY_FILTER,HSBC_LOCAL_INVOL_PARTY 
WHERE ENTITY_FILTER.entity_code = T2.counterparty_new 
AND ENTITY_FILTER.entity_code = HSBC_LOCAL_INVOL_PARTY.entity_code(+) 
AND T2.method_original = 'ADV' 
ORDER BY T2.rwa DESC 
関連する問題