我有一张表,其中存储了产品编号、客户名称和地区。所以我可以使用这个单一的表查询特定区域中特定客户的所有产品。
我正在尝试编写一个查询,使我能够查看客户在一个地区拥有哪些产品,而在另一个地区则没有,反之亦然(比较地区)。换句话说,对于一个特定的客户,我能否看到北方的所有产品而不是南方的产品,以及南方的所有产品而不是北方的产品。
我敢肯定,如果它是 2 个单独的查询,这将非常容易,但我正在尝试在单个查询中完成。可能吗?
Product Client Region 500 1 North 500 1 South 501 1 North 502 1 South 503 1 North 503 1 South
上述数据的结果表明,客户 1 在北方有产品 501,但在南方没有,产品 502 在南方但没有北方。产品 500 和 503 被忽略,因为它们在两个区域中。
Product Client Region 501 1 North 502 1 South
最佳答案
这是一种方法:
Select product, client, region
From yourTable t
Where region in('north','south')
And not exists(
Select product, client, region
From yourTable tt
Where t.region <> tt.region
And t.client = tt.client
And t.product = tt.product
)
关于比较行的 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16021094/