我目前有这个:
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 :(得分: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