Sql 根据特定条件在列中查找重复值

Sql 根据特定条件在列中查找重复值,sql,sql-server,tsql,duplicates,Sql,Sql Server,Tsql,Duplicates,我有一个表,其中包含针对特定帐户的操作,这些操作被赋予一组编号的操作,并在该集合中获得一个唯一的顺序编号。我们遇到了一个问题,不知何故其中一个唯一的数字被复制了,我们想检查更多可能发生这种情况的例子。这张桌子看起来有点像这样: Account | Action Set | Action No | Action Code --------|------------|-----------|------------ 001 | 1 | 1 | GEN

我有一个表,其中包含针对特定帐户的操作,这些操作被赋予一组编号的操作,并在该集合中获得一个唯一的顺序编号。我们遇到了一个问题,不知何故其中一个唯一的数字被复制了,我们想检查更多可能发生这种情况的例子。这张桌子看起来有点像这样:

Account | Action Set | Action No | Action Code
--------|------------|-----------|------------
  001   |     1      |     1     |    GEN
  001   |     1      |     2     |    PHO
  001   |     1      |     3     |    RAN
  001   |     1      |     3     |    GEN
  002   |     1      |     1     |    GEN
  002   |     1      |     2     |    PHO
  002   |     1      |     3     |    RAN
我尝试了在这里搜索到的各种东西,但找不到任何适合我具体情况的东西

对于任何给定的帐号,我想找出在一个操作集中,同一操作编号被多次使用的位置。我还需要返回整行,而不仅仅是计算有多少行。

从上面的例子中,我希望看到这些结果,相同的帐户,相同的操作集,相同的操作编号

Account | Action Set | Action No | Action Code
--------|------------|-----------|------------
  001   |     1      |     3     |    RAN
  001   |     1      |     3     |    GEN
我会发布到目前为止我已经尝试过的内容,但老实说,到目前为止我编写的代码的范围是:

SELECT
短暂性脑缺血发作


标记

根据您的描述,您可以使用
存在

select t.*
from t
where exists (select 1
              from t t2
              where t2.account = t.account and
                    t2.actionset = t.actionset and
                    t2.actionno <> t.actionno
             );
试试这个

Select account,actionset,actioncode,actionno
from table
where (account,actionset)
IN
(
Select account,actionset from table
group by account,actionset
having count(distinct actionno)>1
)
group by account,actionset,actioncode,actionno

请找到我从表中获取重复记录的解决方案

SELECT [ActionSet],ActionCode,[ActionNo]
FROM
(
  SELECT *,ROW_NUMBER()OVER(PARTITION by [ActionSet],[ActionNo] ORDER BY 
  [ActionNo]) as rnk FROM [dbo].[ActionAccount]
) t where t.rnk>1

谢谢。

您应该编辑问题并提供您想要查找的示例。您的行似乎不符合标准。这是一个非常好的开始@GordonLinoff——我知道你已经回答了,你的解决方案也起了作用,但我已经用你的建议更新了原来的问题,以防它能帮助其他人解决同样的问题。谢谢。谢谢你的回复,行动编号应该不同,但要努力确定它们在哪里是相同的。您的第二个查询对我不起作用,只返回数据库中的所有行。但是,我确实添加了一个附加项抱歉,太早按enter键,在WHERE子句中添加了一个附加项,为我修复了它,我已编辑了您的响应。感谢您的响应,但它不喜欢WHERE子句位于括号中(帐户,操作集)--在“,'删除括号,然后选中@MarkJeffriesI尝试删除括号,但没有解决问题。我得到一个错误:一个非布尔类型的表达式,在一个预期条件的上下文中指定,靠近','。
SELECT [ActionSet],ActionCode,[ActionNo]
FROM
(
  SELECT *,ROW_NUMBER()OVER(PARTITION by [ActionSet],[ActionNo] ORDER BY 
  [ActionNo]) as rnk FROM [dbo].[ActionAccount]
) t where t.rnk>1