我收到了这个声明:
select count(*),
article_no_external,
article_group_id
from tbl_erp_article
where article_no_external != ' '
group by article_no_external, article_group_id
having count(*) >1
我希望按group_id
和external_no
分组,这很好用,我得到128条记录。但我想看到所有列不仅仅是那些2.我试图将它们添加到select
,但后来我得到group by
的错误。我还需要4个列,因为我需要抓住它们以使用所选数据创建新记录。
答案 0 :(得分:2)
select article_no_external, article_group_id, col2, col3, col4, col5
from (
select article_no_external, article_group_id, col2, col3, col4, col,
count(*) over (partition by article_no_external, article_group_id) as cnt
from tbl_erp_article
where article_no_external <> ' '
)
where cnt > 1;
如果要查找非空varchar列,请记住Oracle没有空字符串。在插入或更新期间,''
将转换为NULL
。所以你可能想要where article_no_external IS NOT NULL
答案 1 :(得分:1)
在汇总字段数量,总和等时,您无法获得所有列值。
不是同样的结果,但这可能对你有帮助。
select *
from tbl_erp_article
where article_no_external != ' ' and
(article_no_external, article_group_id) in (
select article_no_external, article_group_id
from tbl_erp_article
where article_no_external != ' '
group by article_no_external, article_group_id
having count(*) >1)