Teradata sql 两个条件(和)来检查多行以确定有效性

Teradata sql two conditions(and) to check multiple rows to determine validity

假设我有一个 table 苹果名称和颜色在另一个列中。

Variety        Color
  Fuji          Red
  Fuji          Golden
  Granny Smith   Green
  Granny Smith   Red
  Gala           Red
  Gala           Golden
  Gala           Green

我想知道哪些苹果品种同时具有红色和Golden.So我期待的答案是富士和加拉。那么我该如何编写查询。当然这个查询不起作用。

Select variety from table where Color like all ('Golden%','Red%')

我的 table 有很多专栏和一个巨大的 table 与此类似。

我会这样写:

Select variety
from table
where Color in ('Golden', 'Red')
group by variety
having count(distinct color) = 2;

鉴于您的示例数据,我认为没有理由使用 like 和通配符。

您可以使用 INTERSECT:

INTERSECT Operator

Returns only the rows that exist in the result of both queries.

SELECT variety
FROM tab
WHERE color = 'Red'
INTERSECT
SELECT variety
FROM tab
WHERE color = 'Golden'