gpt4 book ai didi

Oracle Group by NULL 中的 SQL 返回多行

转载 作者:行者123 更新时间:2023-12-02 20:04:44 24 4
gpt4 key购买 nike

我有一个 sql 语句,它试图检索所有相似行的计数大于 1 的行。在所有这些行中,有一个字段似乎持有空值。

案例1:

假设表名称是 ABC


业务单位、发票、标志

A 1(空)

A 1(空)


SQL 语句:根据 COUNT(*) > 1 的 BUSINESS_UNIT、INVOICE、FLAG 从 TABLE ABC 组中选择 BUSINESS_UNIT、INVOICE、FLAG

我希望它不会返回任何行,因为两个标志基本上都是空白的。但它返回


业务单位、发票、标志

A 1(空)


案例2:

表ABC


业务单位、发票、标志

A 1(空)

A 1(空)

B 1 1

B 1(空)


SQL 语句:从 TABLE ABC 组中按 COUNT(*) > 1 的 BUSINESS_UNIT、INVOICE、FLAG 来选择 BUSINESS_UNIT、INVOICE、FLAG

我期待的结果是


业务单位、发票、标志

B 1 1


这适用于 Oracle 11g。有人可以帮忙解决这个问题并让我知道我们是否可以使用 Oracle 中提供的任何功能吗?


编辑原始sql语句后。

我实际上应该从 Group by 和 select 中删除标志并将其添加到计数中,以便识别类似行的多个标志。


谢谢!

最佳答案

嗯,null 也是一个值,因此如果按可为 null 的字段进行分组,则 null 值将与非 null 值不同。

如果您不想使用空值,只需添加一个 where 子句

SELECT INVOICE 
from TABLE ABC
where flag is not null
group by BUSINESS_UNIT, INVOICE, FLAG
having COUNT(*) >1

关于Oracle Group by NULL 中的 SQL 返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24766786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com