具有计数逻辑的SQL

具有计数逻辑的SQL,sql,sql-server-2012,group-by,having,Sql,Sql Server 2012,Group By,Having,我需要有关计数的帮助,我有以下数据的结果集: CREATE TABLE #tmpTest1 (Code VARCHAR(50), Name VARCHAR(100)) INSERT INTO [#tmpTest1] ( [Code], [Name] ) SELECT '160215-039','ROBIN' UNION ALL SELECT '160215-039','ROBIN' UNION ALL SELECT '160215-046','SENGAROB' UNION A

我需要有关计数的帮助,我有以下数据的结果集:

CREATE TABLE #tmpTest1 (Code VARCHAR(50), Name VARCHAR(100))

INSERT INTO [#tmpTest1]
(
    [Code],
    [Name]
)
SELECT '160215-039','ROBIN'
UNION ALL SELECT '160215-039','ROBIN'
UNION ALL SELECT '160215-046','SENGAROB'
UNION ALL SELECT '160215-046','BABYPANGET'
UNION ALL SELECT '160215-045','JONG'
UNION ALL SELECT '160215-045','JAPZ'
UNION ALL SELECT '160215-044','AGNES'
UNION ALL SELECT '160215-044','AGNES'
UNION ALL SELECT '160215-041','BABYTOT'
UNION ALL SELECT '160215-041','BABYTOT'
UNION ALL SELECT '160215-041','BABYTOT'
我只想显示代码相同但名称不同的行,因此在本例中,我的预期结果如下,因为这些行的代码相同但名称不同:

160215-045  JAPZ
160215-045  JONG
160215-046  BABYPANGET
160215-046  SENGAROB
但当我尝试将这两列分组,然后使用having count时,下面是我的查询:

SELECT [Code], [Name] FROM [#tmpTest1] 
GROUP BY [Code], [Name] HAVING COUNT([Code]) > 1
它给了我错误的结果,下面的行有相同的代码和名称,这是我想要的相反

160215-044  AGNES
160215-041  BABYTOT
160215-039  ROBIN
如何获得预期的输出


提前谢谢,任何帮助都将不胜感激。

我相信此查询将为您提供您想要的结果,尽管您最初的问题有点不清楚

SELECT t1.[Code], t1.[Name]
FROM [#tmpTest1] t1
INNER JOIN
(
    SELECT [Code]
    FROM [#tmpTest1] 
    GROUP BY [Code]
    HAVING COUNT(DISTINCT [Name]) > 1
) t2
    ON t1.[Code] = t2.[Code]
请按照以下链接进行运行演示:

根据你的评论

如果代码有1个不同的名称,我想显示它们 记录让我知道有一个不同于其他人

这听起来像是一个exists查询,因为您想检查是否存在另一个代码相同但名称不同的行

select * from [#tmpTest1] t1
where exists (
  select 1 from [#tmpTest] t2
  where t2.code = t1.code
  and t2.name <> t1.name
)

如果希望行具有相同的代码和名称,请使用窗口函数:

select t.*
from (select t.*, count(*) over (partition by code, name) as cnt
      from #temptest1 t
     ) t
where cnt >= 2;

如果你有‘160215-041’、‘BABYTOT’、‘160215-041’、‘BABYTOT’、‘160215-041’、‘OTHER’?在这种情况下会得到什么回报?@我知道,这是个好问题,我没有考虑过。如果是这样的话,我还想显示3条记录,我的意思是如果代码有1个不同的名称,我想显示这些记录,让我知道有一条与其他记录不同。。但是如果代码和名称都相同,我不希望结果中出现这些。。。你能在正确的问题上给我建议或帮助我吗?提前谢谢,蒂姆。我在下面给出的查询应该满足你的要求。如果只有唯一的记录,那么我认为独特的可能就足够了。啊,不。。我想要相同的代码,但不同的名称。。无论如何,感谢你的回答。一票赞成,因为你的回答也有助于我的项目的其他报告要求。。问候:这一个对我有用。我将把它标记为答案。。非常感谢你。。给我很大的帮助:。。当做