我们说这张表有以下数据:
Service_ID Cust_ID Service_Date Next_Service_Date
-----------------------------------------------------
1 15 2016-01-1 2016-01-31
2 21 2016-01-1 2016-01-31
3 15 2016-01-31 2016-03-1
我需要一个条件来检查Next_Service_Date
是否在每个客户中找到Service_Date
而不是整个表格。
例如ID = 15和Service_ID = 3
的客户,您可以看到Service_Date
是在2016-01-31
与Next_Service_Date
和Service_ID = 1
因此查询的输出应为
Service_ID Cust_ID Service_Date Next_Service_Date
------------------------------------------------------
2 21 2016-01-1 2016-01-31
我希望我把事情弄清楚。
请注意为什么我要显示记录#2,因为该客户在Service_Date
中没有与Next_Service_Date
中的日期匹配的记录
答案 0 :(得分:1)
如果我理解正确,您需要double value = get_input();
:
not exists
答案 1 :(得分:0)
编辑 - 我想我现在理解你的问题了 - 你想找到所有应该安排下一个服务日期的记录,但不是吗?如果是这样,组合半连接和反连接就可以做到。
如果我不合适,请让我知道我误解的地方。
select
t1.*
from
MyTable t1
where exists (
select null
from MyTable t2
where
t1.Next_Service_Date = t2.Service_Date
)
and not exists (
select null
from MyTable t2
where
t1.Cust_Id = t2.Cust_Id and
t1.Next_Service_Date = t2.Service_Date
)