Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据列的重复值检索行_Sql_Sql Server_Count - Fatal编程技术网

Sql 根据列的重复值检索行

Sql 根据列的重复值检索行,sql,sql-server,count,Sql,Sql Server,Count,我想从我的表格卡中检索数据 这样,只应返回具有重复成员身份号(即计数大于1)的行。 就像我有以下记录一样 (11,0321,'active','John') (11,0322,'active','John') (23,0350,'active','Mary') (46,0383,'active','Fudge') (46,0382,'active','Fudge') (46,0381,'active','Fudge') 查询应返回除第三条记录外的所有记录。可能吗 我得到了问题的答案。我还有一个

我想从我的表格卡中检索数据

这样,只应返回具有重复成员身份号(即计数大于1)的行。 就像我有以下记录一样

(11,0321,'active','John')
(11,0322,'active','John')
(23,0350,'active','Mary')
(46,0383,'active','Fudge')
(46,0382,'active','Fudge')
(46,0381,'active','Fudge')
查询应返回除第三条记录外的所有记录。可能吗

我得到了问题的答案。我还有一个问题。我也想按状态筛选行,但当我运行以下查询时,我没有得到所需的结果:

SELECT EmbossLine,Membershipnumber,status,embossname,*
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   card) A
WHERE cnt > 1 AND status='E0'
在where子句中添加status之前,它工作得非常好。看图

添加按状态筛选后

应该这样做

使用窗口计数功能来完成此操作

SELECT *
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   youurtable) A
WHERE  cnt > 1 
演示


在empbossname上找到重复项并获得结果

select t1.* from card as t1 inner join 
(select empbossname from card group by empbossname  having count(*)>1) as t2
on t1.empbossname =t2.empbossname 

不,还有一件事;我想按状态进一步筛选记录。我尝试了以下操作,但没有得到想要的结果选择浮雕行、会员编号、状态、浮雕名称、*FROM SELECT*,CountMembershipNumberOVERpartition BY embosseName AS cnt FROM card A,其中cnt>1,status='inactive'在哪里添加status='inactive'以使其合适?@Nuke-您的status列没有E0值。@Nuke-语法正确。当我把状态添加到过滤器时,我也得到了不同的记录,那些没有重复的记录membershipnumber@Nuke-你能添加一些样本数据吗?我有一个大数据,两个人可能同名
SELECT *
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   youurtable) A
WHERE  cnt > 1 
SELECT MembershipNumber,
       [status],
       EmbossName
FROM   (SELECT *,
               Count(MembershipNumber)OVER(partition BY EmbossName) AS cnt
        FROM   (VALUES (11.0321,'active','John'),
                       (11.0322,'active','John'),
                       (23.0350,'active','Mary'),
                       (46.0383,'active','Fudge'),
                       (46.0382,'active','Fudge'),
                       (46.0381,'active','Fudge')) tc (MembershipNumber, [status], EmbossName)) A
WHERE  cnt > 1 
Select c.* from card c
join (select MembershipNumber from table group by
        MembershipNumber having count(MembershipNumber) > 1) mem
on mem.MembershipNumber = c.MembershipNumber
Select * from table where MembershipNumber in
(select MembershipNumber from table group by
        MembershipNumber having count(MembershipNumber) > 1)
select t1.* from card as t1 inner join 
(select empbossname from card group by empbossname  having count(*)>1) as t2
on t1.empbossname =t2.empbossname