Sql 如何获取包含多条记录的列

Sql 如何获取包含多条记录的列,sql,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

在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
但这(这是我需要的,因为我想看到版本,但不起作用):

这将返回0条记录


非常感谢你的帮助

您必须将查询用作派生表,并将其连接回原始表以获取其余字段:

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

您必须将查询用作派生表,并将其连接回原始表以获取其余字段:

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

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

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

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

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

您需要将第一个查询作为子查询连接回原始表。我删除了无关的数据库标记。请随意为您真正使用的数据库添加标记。您需要将第一个查询作为子查询连接回原始表。我删除了无关的数据库标记。可以为您真正使用的数据库添加标记。