SQL Server:从查询2中提取/比较查询1

时间:2013-10-11 00:03:51

标签: sql-server arrays compare subquery

编写第一个查询,查找为我们的员工分配设置为特定状态的特定组的故障单。

  SELECT DISTINCT [SENT TO]
  FROM [sdetst].[_SMDBA_].[_TELMASTE_]
  WHERE [_GROUP_] = 1003 and [SEQ_UDSTATUS:] = 1002 and [SENT TO] is not null 

编写第二个查询是为了找到当前在线且可用的员工。

  SELECT DISTINCT DESK._ACTIVEUSERS_.[Seq.User] 
  FROM DESK.[Support Staff] INNER JOIN DESK._ACTIVEUSERS_ 
  ON DESK.[Support Staff].Sequence = DESK._ACTIVEUSERS_.[Seq.User] 

我想要做的是在查询1中得到不在查询2中的结果。然后在我得到这个之后我计划将这些值设置为null,因为它会使门票未分配并且可以由其他人处理员工。我打算将其设置为每隔几分钟运行一次的预定作业。

1 个答案:

答案 0 :(得分:0)

如果您使用关键字except来确定要更新的telMaste记录,该怎么办?

这样的东西?

;WITH query1WithoutQuery2 AS (
  SELECT DISTINCT [SENT TO]
  FROM [sdetst].[_SMDBA_].[_TELMASTE_]
  WHERE [_GROUP_] = 1003 and [SEQ_UDSTATUS:] = 1002 and [SENT TO] is not null
  EXCEPT
  SELECT DISTINCT DESK._ACTIVEUSERS_.[Seq.User] 
  FROM DESK.[Support Staff] INNER JOIN DESK._ACTIVEUSERS_ 
  ON DESK.[Support Staff].Sequence = DESK._ACTIVEUSERS_.[Seq.User] 
)
UPDATE telMaste
  SET [SENT TO] = NULL 
FROM 
  [sdetst].[_SMDBA_].[_TELMASTE_] as telMaste 
INNER JOIN 
  query1WithoutQuery2 
on telMaste.[SENT TO] = query1WithoutQuery2.[SENT TO]
WHERE [_GROUP_] = 1003 and [SEQ_UDSTATUS:] = 1002 and [SENT TO] is not null