--answer:
select custid, companyname
from Sales.Customers as C
where EXISTS
(select *
from Sales.Orders as O
where O.custid = C.custid
and O.orderdate >= '20070101'
and O.orderdate < '20080101')
and not EXISTS
(select *
from Sales.Orders as O
where O.custid = C.custid
and O.orderdate >= '20080101'
and O.orderdate < '20090101');
/*
1.先處理外層查詢,從Sales.Customers表别名C中取出一個元組,将元組相關列值custid傳給内層查詢
2.執行第一層内層查詢,Sales.Orders表别名O,應用where子句傳回滿足條件O.custid = C.custid和orderdate在2007年至2008年
3.執行第二層内層查詢,Sales.Orders表别名O應用where子句傳回滿足條件O.custid = C.custid和orderdate在2008年至2009年的值
4.執行not EXISTS,外查詢根據子查詢傳回的結果集得到滿足條件的行
*/