使用SQL查询的结果作为第二个的参数

问题描述 投票:-1回答:1

我们的SQL开发人员将以下查询放在一起,基本上拉出了今天登录我们系统的任何员工的列表。此查询完美运行,并将吐出一个名称列表。我需要做的是获取它吐出的名称列表,然后在新查询中使用这些名称来更改每个名称的不同表上的列。

select distinct(t.CC_FullName) as Employee,
t.CC_Supervisor as Supervisor,
t.StaffCimID
from (
select s.*,
r.CC_FullName,
r.CC_Supervisor,
r.StaffCimID
from (
select AgentFirstName + ' ' + AgentLastName as AgentName,
Agent
from pia.dbo.Five9IntraDayExtract with(nolock)
group by AgentFirstName + ' ' + AgentLastName,
Agent
) s
inner join pia.dbo.StaffInformationNew r with(nolock)
    ON CASE
        WHEN s.Agent LIKE '%_manual' AND s.Agent = r.Five9Name_MTM THEN 1
        WHEN s.Agent NOT LIKE '%_manual' AND s.Agent = r.Five9Name THEN 1
        ELSE 0
        END = 1
        and r.EndDate is null
 ) t
 where t.CC_FullName is not null
 and t.StaffCimID is not null
 order by t.CC_FullName, t.CC_Supervisor

所以基本上在那次运行后我得到一个包含三列的列表。我需要使用名称列,基本上执行以下操作:

Update Attendance Set Seated = '1' where name =   'John Doe'

我需要为初始查询的每个结果执行此操作。最好的方法是什么?

sql sql-server
1个回答
2
投票

将其添加到查询的顶部...

Update Attendance 
Set Seated = '1' 
where name in 
(select t.CC_FullName from (
    select s.*,
    r.CC_FullName,
    r.CC_Supervisor,
    r.StaffCimID
    from (
    select AgentFirstName + ' ' + AgentLastName as AgentName,
    Agent
    from pia.dbo.Five9IntraDayExtract with(nolock)
    group by AgentFirstName + ' ' + AgentLastName,
    Agent
    ) s
    inner join pia.dbo.StaffInformationNew r with(nolock)
        ON CASE
            WHEN s.Agent LIKE '%_manual' AND s.Agent = r.Five9Name_MTM THEN 1
            WHEN s.Agent NOT LIKE '%_manual' AND s.Agent = r.Five9Name THEN 1
            ELSE 0
            END = 1
            and r.EndDate is null
     ) t
     where t.CC_FullName is not null
     and t.StaffCimID is not null)
© www.soinside.com 2019 - 2024. All rights reserved.