sql - 统计 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
任何帮助将不胜感激,谢谢!
解决方案
您正在寻找对表本身进行内部连接的内容。
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
推荐阅读
- firebase - 获取当前的 Firestore API 调用
- vb.net - vb.net 从文本框日期获取一年的第一天/上个月的最后一天/上个月的第一天
- flutter - Flutter:在屏幕之间传递多个数据
- amazon-web-services - AWS 网络输出
- jupyterhub - 为自己读/写 Jupyter notebook,为他人只读
- python - 处理无效的 Json
- android - 实现“com.github.parse-community.Parse-SDK-Android:parse:1.20.0”不起作用
- embedded - 如何使普通的 C 库在嵌入式环境中工作?
- swift - Swift 的艺术网
- emacs - org doc 中的结构项目符号列表