我尝试按照WHERE NOT EXISTS
或WHERE NOT IN
的方式做一些事情,但我正在努力学习语法。
这是我到目前为止所得到的结果集,我们称之为 PlanActStaff :
SELECT
CTE_PlanStaff.RegisterID,
CTE_PlanStaff.TT_ActivityDate,
CTE_PlanStaff.TT_ActivityTime,
CTE_PlanStaff.TT_StaffID,
CTE_ActStaff.ActStaffID
FROM
CTE_PlanStaff
INNER JOIN
CTE_ActStaff
ON
CTE_PlanStaff.RegisterID = CTE_ActStaff.RegisterID
AND
CTE_PlanStaff.TT_ActivityDate = CTE_ActStaff.ActSessionDate
AND
CTE_PlanStaff.TT_ActivityTime = CTE_ActStaff.ActSessionStartTime
对于此结果集中的每条记录,我希望查询返回并检查我的CTE_PlanStaff
CTE,以查看ActStaffID
,{{1}的当前组合是否存在RegisterID
{}}中的{}和TT_ActivityDate
。
例如,如果在 PlanActStaff 中检查的记录如下所示:
TT_ActivityTime
CTE_PlanStaff
将在| RegisterID | TT_ActivityDate | TT_ActivityTime | TT_StaffID | ActStaffID |
|------------|-----------------|-----------------|------------|------------|
| 98688 | 2016-01-04 | 11:20 | 2453 | 2067 |
,CTE_PlanStaff
和RegisterID
的同一组合上进行过滤,因此TT_ActivityDate
可能会将这些记录进行比较:< / p>
TT_ActivityTime
然后我希望CTE_PlanStaff
的{{1}}值与过滤的| RegisterID | TT_ActivityDate | TT_ActivityTime | TT_StaffID |
|------------|-----------------|-----------------|------------|
| 98688 | 2016-01-04 | 11:20 | 2500 |
| 98688 | 2016-01-04 | 11:20 | 2453 |
中的每个ActStaffID
进行核对,如果2067
不是&#39 ;列出将该记录显示在我的 PlanActStaff 查询中。
我尝试按照以下方式调整 PlanActStaff ...
TT_StaffID
...但我收到以下错误:
当选择列表中只能指定一个表达式时 子查询不是用EXISTS引入的。
我开始关注CTE_PlanStaff
,但我无法弄清楚如何针对当前记录过滤ActStaffID
,然后检查staffID字段。
答案 0 :(得分:1)
WHERE
ActStaffID NOT IN ( SELECT * FROM CTE_PlanStaff WHERE CTE_PlanStaff.RegisterID = PlanActStaff.RegisterID AND CTE_PlanStaff.TT_ActivityDate = PlanActStaff.TT_ActivityDate AND CTE_PlanStaff.TT_ActivityTime = PlanActStaff.TT_ActivityTime )
您应该只选择一个要与'ActStaffID'进行比较的字段