根据 Oracle sql 中条件的输出运行查询

问题描述 投票:0回答:1

我有一个列名为“InformationType”的表。现在,根据 informationType 的值,我想运行另一个查询。

假设如果 informationType = 'abc',则也查找 informationType = 'xyz' 的行,并且两种信息类型的数据应该组合在一起(就像 Union 那样)。

因此,如果有 1 行信息类型为“abc”,1 行信息类型为“xyz”,则返回的结果集总共应为 2 行。

并且,

如果 informationType 不是 'abc',则不再查找 'xyz' informationType 并返回 null。即 0 行

可以使用查询来实现吗?我无法使用 PL/SQL。

sql oracle oracle11g
1个回答
0
投票

在分析函数中使用条件聚合来计算

'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
© www.soinside.com 2019 - 2024. All rights reserved.