Sql server SQL Server分组依据

Sql server SQL Server分组依据,sql-server,tsql,Sql Server,Tsql,我有一个包含引用和名称的表。数据中存在一些问题,一个引用有两个以上的不同名称,这是不允许的 我是否可以编写一个快速查询来查找所有具有多个关联名称的引用 对不起,我想澄清一下: 我可以有很多名字,和很多引用,但每个引用只关联一个名字。如果有两个不同的名称与单个引用关联,我需要显示这些名称。您可以按引用对其进行分组,然后选择具有多个名称的所有条目: select reference, count(*) from myTable group by reference having count(*)

我有一个包含引用和名称的表。数据中存在一些问题,一个引用有两个以上的不同名称,这是不允许的

我是否可以编写一个快速查询来查找所有具有多个关联名称的引用

对不起,我想澄清一下:


我可以有很多名字,和很多引用,但每个引用只关联一个名字。如果有两个不同的名称与单个引用关联,我需要显示这些名称。

您可以按引用对其进行分组,然后选择具有多个名称的所有条目:

select reference, count(*) 
from myTable
group by reference
having count(*) > 1;
查询:

样本数据:

declare @table table(reference varchar(5), name int)
INSERT INTO @table values('Ref#1', 1)
INSERT INTO @table values('Ref#1', 2)
INSERT INTO @table values('Ref#2', 3)
INSERT INTO @table values('Ref#2', 3)
INSERT INTO @table values('Ref#3', 4)
输出:

| Ref#1 | 2 |
| Ref#2 | 2 |

我是这样处理的:

SELECT ref, COUNT(name)
FROM table
GROUP BY ref
HAVING COUNT(DISTINCT(name)) > 1

如果特定引用的最小名称和最大名称不同,则必须至少有两个名称与该引用关联:

SELECT Reference, MIN(Name), MAX(Name)
FROM Table
GROUP BY Reference
HAVING MIN(Name) < MAX(Name)
选择参考、最小值(名称)、最大值(名称)
从桌子上
参照分组
最小值(名称)小于最大值(名称)

这会起作用,但相同的名称和引用可能会出现多次。但是,只能显示一个不同的名称和引用。您的意思是,当两行同时具有相同的引用和名称时,这是不可能的?修复数据后,请确保应用适当的约束,以防止将来再次插入此断开的数据。如果使用
具有计数(不同的名称)>1
,然后也使用
选择参考,计数(不同的名称)
不同的
不是一个函数,名称周围不需要括号
SELECT Reference, MIN(Name), MAX(Name)
FROM Table
GROUP BY Reference
HAVING MIN(Name) < MAX(Name)