我有一些像这样的行:
Table: Orders
OrderNumber City
------------------------
1001 Austin
1001 Dallas
1001 Houston
1001 Miami
1002 Austin
1003 Austin
1003 Dallas
我想提取所有其他任何城市的城市为奥斯汀 AND 的OrderNumbers。在上面的例子中,我应该得到订单1001和1003但不是1002.
实现这一目标的最佳方法是什么?
答案 0 :(得分:2)
另一种可能的方法是拥有两个CTE(公用表格式) - 一个用于所有Austin
订单,另一个用于所有其他订单 - 并加入OrderNumber
上的那些:
WITH AustinOrders AS
(
SELECT OrderNumber FROM Orders WHERE City = 'Austin'
), OtherOrders AS
(
SELECT OrderNumber FROM Orders WHERE City <> 'Austin'
)
SELECT
DISTINCT ao.OrderNumber
FROM AustinOrders ao
INNER JOIN OtherOrders oo ON ao.OrderNumber = oo.OrderNumber
产生以下结果:
OrderNumber
-----------
1001
1003
答案 1 :(得分:1)
你应该可以使用:
select *
from orders o1
where o1.city = 'Austin'
and exists (select ordernumber
from orders o2
where o1.ordernumber = o2.ordernumber
group by ordernumber
having count(distinct city) >1)