如何获取具有多个记录的列

时间:2016-07-19 21:20:04

标签: sql

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条记录。

非常感谢您的帮助!

2 个答案:

答案 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

答案 1 :(得分:1)

您可以使用窗口函数执行此操作: -

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