0

我有一个大约 200,000 多条记录的列表,按子产品线划分,然后汇总到一个产品线。

例如:

在此处输入图像描述

(顺便说一句,我如何在我的问题中实际显示表格?)

我想要的是一个 where 语句,它只包含其产品线中只有电缆和/或电话的结果。例如,CT-23415 有笔记本电脑和电缆,所以它会从这些结果 b/c 中排除,而它有电话,它也有笔记本电脑,我只想看到电话、电缆或组合的结果二。CT-12345 和 CT-41567 将是唯一包含的行。

有任何想法吗?

4

2 回答 2

1
select  *
from    YourTable yt1
where   ProductLine in ('Cable', 'Telephone')
        and not exists
        (
        select  *
        from    YourTable yt2
        where   yt1.Contract = yt2.Contract
                and yt2.ProductLine not in ('Cable', 'Telephone')
        )
于 2013-05-30T20:55:54.030 回答
0

这是“set-within-sets”查询的一个示例。我喜欢用聚合来做这些,having因为这是非常普遍的。

在你的情况下:

select contract
from list
group by contract
having sum(case when ProductLine not in ('Cable', 'Telephone') then 1 else 0 end) = 0

也就是说,它计算合同中不可接受的产品线的数量。如果数字为 0,则所有都可以接受并返回合同。

于 2013-05-30T20:55:59.360 回答