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