首页 > 解决方案 > 统计 SQL 中具有不同 ID 的名称

问题描述

我写了一个代码,应该计算在我的专栏中多次找到的名字

以下是每列代表的内容:

col1 = Ids (float, null)
col2 = names (nvarchar(255), null)
col3 = region (nvarchar(255), null)
col4 = end_date (datetime, null)

每个表都有 col2,这就是我能够链接它们的方式。

这是我写的代码:

SELECT DISTINCT T.col1, T2.col2, T2.col3, col4
FROM tab1 AS T
INNER JOIN tab2 AS T2 ON T.col2=T2.col2
WHERE col2 IN 
    (SELECT [col2] FROM [tab1] GROUP BY [col2] HAVING COUNT(*) > 1)
    AND T.col4 IS NULL
ORDER BY T.col2 ASC

基本上,我几乎得到了想要的结果,但我的代码中遗漏了一些东西。我只想要 col2 中包含相同名称的值,以便我可以计算它们并隔离它们。我试图在我的SELECT语句中使用COUNT函数,但没有得到预期的结果。我不确定,但我相信可能是数据类型弄乱了计数。

这是我得到的当前结果的示例:

col1        col2    col3    col4
1222222222  Bus1    NY      NULL
1333333333  Bus2    NY      NULL
1444444444  Bus3    NY      NULL
1555555555  Bus4    NY      NULL
1666666666  Bus4    NY      NULL
1777777777  Bus5    NY      NULL 

这是我期望并希望实现的目标:

col1        col2    col3    col4
1555555555  Bus4    NY      NULL
1666666666  Bus4    NY      NULL

任何帮助将不胜感激,谢谢!

标签: sqlcountdistinct

解决方案


您正在寻找对表本身进行内部连接的内容。

SELECT a.col1, a.col2, a.col3, a.col4
FROM test a
INNER JOIN test b ON a.col2 = b.col2
WHERE a.col1 <> b.col1

我在这里对其进行了测试,它返回了你想要的:看看:http ://www.sqlfiddle.com/#!9/cdb4df/37


推荐阅读