I have a Process table in sql server database like this:

I need to select Process if Rolename exists in to RoleTable like this:
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 this select Rolename adds to Process. I need to only Process table. I can add Process fields (ID,WorkflowXML) to query. If I change Process table design I should edit query. This is not very good.
Is there a way to select Process table in query without adding Process fields like this?
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)
Thanks.
You can join this table like:
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)')
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With