仅当依赖值的 none 为 nul 时才显示值
display a value only if none of the dependent values are nul
我对 SQL 很陌生,需要一些建议来编写对 select Col1 值的查询,仅当 none 的值Col2 (Col3) 的状态在 plsql 中为空。
在上面,我期望结果 return 只有 A2 和 A1 一样,col3 中有一个空值。
有很多方法可以给这只猫剥皮,但这应该 return 你所有的 A2 行:
select *
from yourTable d
where d.col1 in (select col1
from (select col1
,sum(case when col3 is null then 1 else 0 end) null_values
from yourTable
group by col1
)
where null_values = 0
)
简单解释一下这个方法:内部查询计算每个col1值的空col3值的数量;然后中间查询 return 是唯一没有关联的空 col3 值的不同 col1 值,而外部查询 return 是包含 col1 值的所有行的所有详细信息。
以上当然是SQL。正如您指定的 PL/SQL,您可以根据需要包含游标或 bulk collect into 子句之类的内容以处理查询结果集。
正如我在下面的评论中提到的,这只是实现输出的一种方式 - Oracle 分析函数也可能会有所帮助。此外,根据数据集的大小,您可能需要考虑所选方法的性能方面。
我对 SQL 很陌生,需要一些建议来编写对 select Col1 值的查询,仅当 none 的值Col2 (Col3) 的状态在 plsql 中为空。 在上面,我期望结果 return 只有 A2 和 A1 一样,col3 中有一个空值。
有很多方法可以给这只猫剥皮,但这应该 return 你所有的 A2 行:
select *
from yourTable d
where d.col1 in (select col1
from (select col1
,sum(case when col3 is null then 1 else 0 end) null_values
from yourTable
group by col1
)
where null_values = 0
)
简单解释一下这个方法:内部查询计算每个col1值的空col3值的数量;然后中间查询 return 是唯一没有关联的空 col3 值的不同 col1 值,而外部查询 return 是包含 col1 值的所有行的所有详细信息。
以上当然是SQL。正如您指定的 PL/SQL,您可以根据需要包含游标或 bulk collect into 子句之类的内容以处理查询结果集。
正如我在下面的评论中提到的,这只是实现输出的一种方式 - Oracle 分析函数也可能会有所帮助。此外,根据数据集的大小,您可能需要考虑所选方法的性能方面。