【发布时间】:2016-06-21 16:57:33
【问题描述】:
我正在尝试根据另一个表中是否不存在某个值来确定如何在一个表中显示数据。我研究了案例陈述,但无法弄清楚它如何适用于我目前的情况。
我有两个表,CompanyRequestOff 和 TakeOver,我希望能够从 CompanyRequestOff 中选择列,其中 TransactionIDs 相等,但 User 列不能相同。
任何帮助甚至为我指明正确的方向都会很有用,谢谢。
CompanyRequestOff 表有这些列:
TransactionID
Requestee
RequestedDate
RequestedTimeSlot
RequestedPosition
RequestStatus
LastUpdate
Manager
TakeOver 表有:
Id
TransactionID
RequestedUser
RequestStatus
LastUpdate
Manager
这是我解决这个问题的尝试:
SELECT
CompanyRequestOff.TransactionID, CompanyRequestOff.Requestee,
CompanyRequestOff.RequestedDate, CompanyRequestOff.RequestedTimeSlot,
CompanyRequestOff.RequestedTimeSlot, CompanyRequestOff.RequestedPosition,
CompanyRequestOff.RequestStatus, CompanyRequestOff.LastUpdate,
CompanyRequestOff.Manager
FROM
CompanyRequestOff, TakeOver
WHERE
RequestedDate > GETDATE()
AND CompanyRequestOff.RequestStatus = 'Requested'
AND CompanyRequestOff.TransactionID = TakeOver.TransactionID
AND TakeOver.RequestedUser != @UserN;
唯一相关的列是transactionID 列,它在CompanyRequestOff 中是主要的,在TakeOver 中是外来的。我想显示CompanyRequestOff 表中的列,其中TakeOver 中没有行与transactionID 但只有当它包含某个TakeOver.RequestedUser 值时。
【问题讨论】:
-
不能只是连接上的复合条件吗?
Select * from CompanyRequestOff CRO LEFT JOIN takeOver TO on TO.TransactionID = CRO.TransactionID and CRO.User <> TO.User
标签: sql tsql conditional