如何解决选择 ID 在列表中的行并满足其他 2 个要求,可能是 Teradata SQL 中的子查询?
ID | col1 | col2
-------------------
111 | A | 54
222 | B | 8
333 | C | 17
444 | B | 44
555 | A | 1
我有客户 ID 列表:
myList = ['111','222','333']
并且我需要从表中选择 myList 中满足要求的客户 ID:
- 在 col1 中的值为“A”或“B”
- 在 col2 中的值大于 10 (>10)
因此,我需要如下所示:
ID | col1 | col2
--------------------
111 | A | 54
因为 ID = 111 并且在 myList
上,col1 是“A”或“B”并且 col2 中的值大于 10。
我如何在 teradata sql 中做到这一点?可能在子查询中?
解决方法
不需要子查询。
所有条件都可以与简单 AND
语句的 WHERE
子句中的 SELECT
运算符组合:
SELECT *
FROM tablename
WHERE ID IN ('111','222','333')
AND col1 IN ('A','B')
AND col2 > 10
,
我们可以在这里尝试聚合方法:
SELECT *
FROM yourTable
WHERE ID IN ('111','333') AND
ID IN (SELECT ID
FROM yourTable
GROUP BY ID
HAVING COUNT(CASE WHEN col1 NOT IN ('A','B') THEN 1 END) = 0 AND
COUNT(CASE WHEN col2 > 10 THEN 1 END) > 0);
WHERE
子句将 ID
值限制为您的客户列表。 HAVING
子句中的两个条件检查对另外两列的限制。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。