Requête produisant un résultat indésirable

Voici ma table:

entrez la description de l'image ici

J'ai écrit la requête ci-dessous

select a.name as 'Roll up', b.name as 'Appeal Category', C.NAME as 'Planned Appeal', D.NAME as 'PME' from GROUP_TABLE A left outer JOIN GROUP_TABLE B ON A.MKTPLANID = B.MKTPLANID AND A.PARENTID = B.PMKID left outer JOIN GROUP_TABLE C ON A.MKTPLANID = C.MKTPLANID AND B.PARENTID = C.PMKID left outer JOIN GROUP_TABLE D ON A.MKTPLANID = D.MKTPLANID AND C.PARENTID = D.PMKID where a. caption = 'Roll up' 

Voici la sortie pour ma requête:

entrez la description de l'image ici

En plus de ce résultat, j'ai aussi voulu montrer l'ID du parent de la légende 'PME' seul. Donc, je veux une colonne de plus comme ID PME montrant les identifiants '04' et '07'

Basé sur les informations que vous avez données

@ JamieD77 est correct que la seule réponse possible est d'append D.ParentID à l'instruction select

C'est à cause de la dernière jointure externe

 left outer JOIN GROUP_TABLE D ON A.MKTPLANID = D.MKTPLANID AND C.PARENTID = D.PMKID 

Le tableau C dans ce cas sont les 2 lignes avec l'appel planifié comme légende.

Ils se lient aux lignes avec PME comme légende où ils partagent le même MKTPLANID et où l'appel planifié PARENTID est égal au PME PMKID .

Par conséquent, les lignes du tableau D seront les 2 lignes avec une Caption de PME, le PARENTID des 2 lignes est 04 et 07.

Vous devez créer des vues en tant que pré-résultats, puis vous pouvez appliquer d'autres opérations ou vous pouvez écrire cette requête en tant que style de requête nested. il y a des dependencies d'un résultat à l'autre. donc sa stratégie d'exécution ne fonctionne pas correctement. vous pouvez écrire cette command pour vérifier la stratégie d'exécution. SET SHOWPLAN_TEXT ON