2016-07-19 10 views
3

Ich habe eine Tabelle Prozess in SQL Server-Datenbank wie folgt aus:get Tabelle ohne hinzugefügte Spalte in SQL-Abfrage

Process Table

Ich brauche Process zu wählen, wenn Rolename um RoleTable wie dies existiert:

select ID,WorkflowXML 
    from 
    (
    select m.c.value('@RoleName','nvarchar(max)') as Rolename,p.* 
    from Process as p 
    outer apply p.WorkflowXML.nodes('/workflow/Tasks/Task[@type="start"]/TaskUsers/TaskUser') as m(c) 
    ) as Pro where Pro.Rolename in 
    (SELECT * from RoleTable) 

In diesem wählen Sie Rolename fügt zu Process hinzu. Ich brauche nur Process Tabelle. Ich kann Process Felder (ID,WorkflowXML) zur Abfrage hinzufügen. Wenn ich Process Tabellenentwurf ändere, sollte ich Abfrage bearbeiten. Das ist nicht sehr gut.

Gibt es eine Möglichkeit zur Auswahl Process Tabelle in Abfrage ohne Process Felder wie folgt hinzufügen?

select Pro 
     from 
     (
     select m.c.value('@RoleName','nvarchar(max)') as Rolename,p.* 
     from Process as p 
     outer apply p.WorkflowXML.nodes('/workflow/Tasks/Task[@type="start"]/TaskUsers/TaskUser') as m(c) 
     ) as Pro where Pro.Rolename in 
     (SELECT * from RoleTable) 

Danke.

Antwort

1

Sie diese Tabelle beitreten können wie:

select p.* 
from Process as p 
outer apply p.WorkflowXML.nodes('/Tasks/Task[@type="start"]/TaskUsers/TaskUser') as m(c) 
INNER JOIN RoleTable r 
    ON r.Rolename = m.c.value('@RoleName','varchar(max)') 
Verwandte Themen