我正在努力应对查询的巨大挑战。我有两张桌子,第一张有
Tb1中 drID schedDate rteID
第二个:
Tb2的 drID FName参数 LName的 活性
必须检查Tb1 drID是否为空或空白并且匹配schedDate并且drID不能具有与所选日期的Tb2.drID匹配的任何值,检查Null并且“基本上执行此操作。”
SELECT drID, schedDate, rteID
FROM Tb1
WHERE (drID IS NULL OR drID = '') AND (schedDate = 11 / 1 / 2012)
从所有这些我需要返回TB2 drID,Fname,LName其中Active = True并且tb1中所选schedDate的任何记录都不存在drID。
任何可能的日期都有许多tb1 rteID记录。
感谢您对此提供的任何帮助以及巨大的假期谢谢。
答案 0 :(得分:1)
您可以将select语句设为子查询,例如:
SELECT drID, Fname, LName
FROM TB2
WHERE Active = True
AND drID NOT IN (
SELECT drID
FROM Tb1
WHERE (drID IS NULL OR drID = '')
AND (schedDate = 11 / 1 / 2012)
)
修改强>
要处理schedDate为null的情况,那么
SELECT drID, Fname, LName
FROM TB2
WHERE Active = True
AND drID NOT IN (
SELECT drID
FROM Tb1
WHERE (drID IS NULL OR drID = '')
AND (schedDate = @yourDate OR schedDate IS NULL)
)
编辑2
要处理drID为null的情况,您可以使用此SO帖子中强调的NOT EXISTS
方法NOT IN vs NOT EXISTS
SELECT drID, Fname, LName
FROM TB2
WHERE Active = True
AND NOT EXISTS (
SELECT drID
FROM Tb1
WHERE (schedDate = @yourDate)
AND Tb1.drID = TB2.drID
)