我有一个列名为“InformationType”的表。现在,根据 informationType 的值,我想运行另一个查询。
假设如果 informationType = 'abc',则也查找 informationType = 'xyz' 的行,并且两种信息类型的数据应该组合在一起(就像 Union 那样)。
因此,如果有 1 行信息类型为“abc”,1 行信息类型为“xyz”,则返回的结果集总共应为 2 行。
并且,
如果 informationType 不是 'abc',则不再查找 'xyz' informationType 并返回 null。即 0 行
可以使用查询来实现吗?我无法使用 PL/SQL。
在分析函数中使用条件聚合来计算
'abc'
行的数量,然后过滤以仅包含 'xyz'
行(如果还有 'abc'
行):
SELECT *
FROM (
SELECT t.*,
COUNT(CASE informationType WHEN 'abc' THEN 1 END) OVER () AS num_abc
FROM table_name t
WHERE informationType IN ('abc', 'xyz')
)
WHERE informationType = 'abc'
OR num_abc > 0