获取sql查询中未添加列的表

获取sql查询中未添加列的表,sql,sql-server,Sql,Sql Server,我在sql server数据库中有一个如下所示的进程表: 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')

我在sql server数据库中有一个如下所示的进程表:

 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)

如果to
RoleTable
中存在
Rolename
,我需要选择
Process
,如下所示:

 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)
在此过程中,选择
Rolename
添加到
过程中。我只需要
处理
表。我可以添加
Process
字段(
ID,WorkflowXML
)进行查询。如果我更改
流程
表设计,我应该编辑查询。这不是很好

有没有一种方法可以在查询中选择
Process
表,而不添加这样的
Process
字段

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)

谢谢。

您可以像这样加入此表:

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)')