获取不同的不同对

  • 本文关键字:获取 sql sql-server
  • 更新时间 :
  • 英文 :


我有一个包含站点id、站点名称和站点地址的表。我正试图写一个查询,将给我相同的网站名称具有不同的网站id的所有实例,我有一个困难的时间..

site_id      site_name      site_address
1        North Office       123 Test Rd.
2           Eastern         456 Fake St.
3        North Office       789 Data Ln.
4        West Office        111 Western Ave.
5        North Office       901 Delta Rd.

在我的场景中,我将寻找一个返回站点id 1,3和5的查询,因为id不同,但站点名称相同。

我没有得到很远的在我所尝试的,因为我有点迷路。我已经尝试将计数与HAVING和GROUP BY合并,但我一直得到错误..

SELECT site_id, site_name, site_address FROM table WHERE site_id IN (SELECT site_id FROM table WHERE...)

我似乎找不到SQL Server副本,然而,这实际上是与许多其他RDBMS相同的答案,并且非常类似的解决方案,例如获取每个组的前1行;使用CTE/派生表获取COUNT,然后对其进行过滤:

WITH CTE AS(
SELECT SiteId,
SiteName,
COUNT(*) OVER (PARTITION BY SiteName) AS Sites
FROM dbo.YourTable)
SELECT SiteId,
SiteName
FROM CTE
WHERE Sites > 1;

,db&lt的在小提琴

你差点就成功了,可能在小组中失败了。下面是如何做到这一点的一个例子

SELECT site_id, site_name, site_address
FROM dbo.YourTable
WHERE site_name IN (SELECT site_name FROM dbo.YourTable
GROUP BY site_name
HAVING COUNT(DISTINCT site_id) > 1)

相关内容

  • 没有找到相关文章

最新更新