2016-07-19 107 views
0

在SQL列我有这个目前:如何获得具有多个记录

Checklist Name | Version 

Checklist A  1.1 
Checklist A  2.1 
Checklist B  1.1 
Checklist C  1.1 
Checklist C  2.1 
Checklist C  3.1 

我试图让只拥有一个以上的版本(所以不是清单B)的记录。 这是我想要的结果:

Checklist Name | Version 

Checklist A  1.1 
Checklist A  2.1 
Checklist C  1.1 
Checklist C  2.1 
Checklist C  3.1 

我有麻烦,因为我尝试使用having子句,它只是让我选择的清单名称,所​​以这将工作

select checklistname 
from checklisttable 
group by checklistname 
having count(version) > 1 

上面会产品的输出:

Checklist A 
Checklist C 

但这(这是我所需要的,因为我想看到的版本,不工作):

select checklistname, version 
from checklisttable 
group by checklistname, version 
having count(version) > 1 

这将返回0条记录。

非常感谢您的帮助!

+0

您需要将您的第一个查询作为子查询连接回原始表。 – Uueerdo

+0

我删除了无关的数据库标签。随意为您真正使用的数据库添加标签。 –

回答

2

你必须使用你的查询作为派生表,并加入回原来的表,以获得其余字段:

select t1.* 
from checklisttable t1 
join (
    select checklistname 
    from checklisttable 
    group by checklistname 
    having count(version) > 1 
) t2 on t1.checklistname = t2.checklistname 
+0

你真了不起!谢谢! – Kara

1

你可以使用窗口功能,做到这一点: -

select * from 
(
select 
    Checklist_Name, 
    Version, 
    count(Checklist_Name) over(partition by Checklist_Name) c 
from checklisttable 
) data 
where c > 1 
相关问题