Pesquisa de várias metas em nós XML no SQL Server

Eu tenho uma tabela de processo no SQL Server como esta:

workflowXML A coluna possui valores como este:

sample1 (ProcessID = 1)

workflowXML da amostra1:

<process>
    <Event type="start" id="StartEvent_1" name="Start">
      <outgoing>SequenceFlow_0z7u86p</outgoing>
      <outgoing>SequenceFlow_1onkt3z</outgoing>
    </Event>
    <task type="" id="Task_0a7vu1x" name="D">
      <incoming>SequenceFlow_108ajnm</incoming>
      <incoming>SequenceFlow_1onkt3z</incoming>
      <outgoing>SequenceFlow_01clcmz</outgoing>
    </task>
    <task type="goal" id="Task_00ijt4n" name="B">
      <incoming>SequenceFlow_17q1ecq</incoming>
      <incoming>SequenceFlow_0q9j3et</incoming>
      <outgoing>SequenceFlow_1ygvv8b</outgoing>
      <outgoing>SequenceFlow_02glv1g</outgoing>
    </task>
    <task type="" id="Task_1rnuz4y" name="A">
      <incoming>SequenceFlow_1ygvv8b</incoming>
      <incoming>SequenceFlow_0z7u86p</incoming>
      <outgoing>SequenceFlow_108ajnm</outgoing>
      <outgoing>SequenceFlow_17q1ecq</outgoing>
      <outgoing>SequenceFlow_075iuj9</outgoing>
    </task>                
    <task type="goal" id="Task_1d4ykor" name="E">
      <incoming>SequenceFlow_01clcmz</incoming>
      <incoming>SequenceFlow_075iuj9</incoming>
      <incoming>SequenceFlow_1djp3tu</incoming>
      <outgoing>SequenceFlow_0q9j3et</outgoing>
    </task>        
    <task type="goal" id="Task_1sembw4" name="C">
      <incoming>SequenceFlow_02glv1g</incoming>
      <outgoing>SequenceFlow_1djp3tu</outgoing>
    </task>    
</process>

sample2 (ProcessID = 2)

workflowXML de sample2:

<process id="Process_1" isExecutable="false">
    <Event type="start" id="StartEvent_0bivq0x" name="Start">
      <outgoing>SequenceFlow_0q5ik20</outgoing>
      <outgoing>SequenceFlow_147xk2x</outgoing>
    </Event>
    <task type="" id="Task_141buye" name="A">
      <incoming>SequenceFlow_0q5ik20</incoming>
      <incoming>SequenceFlow_0wg37hn</incoming>
      <outgoing>SequenceFlow_1pvpyhe</outgoing>
      <outgoing>SequenceFlow_10is4pe</outgoing>
    </task>
    <task type="" id="Task_1n3p00i" name="C">
      <incoming>SequenceFlow_147xk2x</incoming>
      <incoming>SequenceFlow_10is4pe</incoming>
      <outgoing>SequenceFlow_18ks1jr</outgoing>
      <outgoing>SequenceFlow_08gxini</outgoing>
    </task>
    <task type="goal" id="Task_0olxqpp" name="B">
      <incoming>SequenceFlow_1pvpyhe</incoming>
      <outgoing>SequenceFlow_03eekq0</outgoing>
    </task>
    <task type="goal" id="Task_0zjgfkf" name="D">
      <incoming>SequenceFlow_18ks1jr</incoming>
      <incoming>SequenceFlow_03eekq0</incoming>
      <outgoing>SequenceFlow_0wg37hn</outgoing>
    </task>
    <task type="" id="Task_1q71efy" name="E">
      <incoming>SequenceFlow_08gxini</incoming>
    </task>
</process>

Editar1 (Adicionar amostra3)

sample3 (ProcessID = 3)

workflowXML de sample3:

<process>
  <Event type="start" id="StartEvent_1" name="Start">
    <outgoing>SequenceFlow_01rkkhj</outgoing>
  </Event>
  <task type="" id="Task_1jixk79" name="A">
    <incoming>SequenceFlow_01rkkhj</incoming>
    <incoming>SequenceFlow_1tszkq8</incoming>
    <outgoing>SequenceFlow_0v8wuqu</outgoing>
    <outgoing>SequenceFlow_14u6fh7</outgoing>
    <outgoing>SequenceFlow_1q4991g</outgoing>
  </task>
  <task type="" id="Task_0xwvhuo" name="B">
    <incoming>SequenceFlow_0v8wuqu</incoming>
    <outgoing>SequenceFlow_15fmkbq</outgoing>
    <outgoing>SequenceFlow_0x4ykgp</outgoing>
    <outgoing>SequenceFlow_0f4gpf1</outgoing>
  </task>
  <task type="goal" id="Task_0qsvlob" name="G">
    <incoming>SequenceFlow_0qse1xk</incoming>
    <incoming>SequenceFlow_16a0qvv</incoming>
  </task>
  <task type="goal" id="Task_0wtjftd" name="E">
    <incoming>SequenceFlow_14u6fh7</incoming>
    <incoming>SequenceFlow_0z3qle8</incoming>
    <outgoing>SequenceFlow_0vg7sax</outgoing>
    <outgoing>SequenceFlow_0qse1xk</outgoing>
  </task>
  <task type="" id="Task_0c85e6p" name="F">
    <incoming>SequenceFlow_0x4ykgp</incoming>
    <incoming>SequenceFlow_17k5zfg</incoming>
    <outgoing>SequenceFlow_16a0qvv</outgoing>
    <outgoing>SequenceFlow_0z3qle8</outgoing>
  </task>
  <task type="" id="Task_164ihwt" name="D">
    <incoming>SequenceFlow_0q9hqs6</incoming>
    <incoming>SequenceFlow_1q4991g</incoming>
    <outgoing>SequenceFlow_17k5zfg</outgoing>
  </task>
  <task type="goal" id="Task_032o8jx" name="C">
    <incoming>SequenceFlow_15fmkbq</incoming>
    <incoming>SequenceFlow_0vg7sax</incoming>
    <outgoing>SequenceFlow_0q9hqs6</outgoing>
    <outgoing>SequenceFlow_1tszkq8</outgoing>
  </task>
  <task type="goal" id="Task_0fsibap" name="H">
    <incoming>SequenceFlow_0f4gpf1</incoming>
  </task>
</process>

Preciso encontrar nós de objetivo no nó inicial que:

existe um caminho para eles desde o início e não há nós de objetivo nesse caminho.

Resultado da consulta na tabela de processos comsample1 esample2 é como isso:

+-------+----------+-------------+
|  ID   | nodeName |    nodeID   |
+-------+----------+-------------+
|   1   |    B     |Task_00ijt4n |
+-------+----------+-------------+
|   1   |    E     |Task_1d4ykor |
+-------+----------+-------------+
|   2   |    B     |Task_0olxqpp |
+-------+----------+-------------+
|   2   |    D     |Task_0zjgfkf |
+-------+----------+-------------+

Seria muito útil se alguém pudesse explicar a solução para esta consulta.

Obrigado.

questionAnswers(1)

yourAnswerToTheQuestion