sql-server - SQL Server 2008 根据 1 个唯一列查找行并在第二列中查找重复项

标签 sql-server

能否建议我如何编写查询来检索以下内容?

我需要找到 A 中的值重复但 B 中的值不同的任何行


  A    B 
4567    2 
852125  9
444     8
2547    25
255     4
256     1
2547    25
2547    27
259     4
2547    25

应该返回


2547    27 
2547    25 

因为 2547 在 B 列中有两个不相同的值

感谢期待

P

最佳答案

with cte1 as (
    select distinct A, B from Table1
), cte2 as (
    select A, B, count(*) over(partition by A) as cnt from cte1
)
select
    A, B
from cte2 
where cnt > 1

sql fiddle demo

with cte as (
    select distinct
        A, B, min(B) over(partition by A) as m1, max(B) over(partition by A) as m2
    from Table1
)
select
    A, B
from cte
where m1 <> m2

sql fiddle demo

关于sql-server - SQL Server 2008 根据 1 个唯一列查找行并在第二列中查找重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27256765/

相关文章:

python - 使用 pypyodbc 运行多个存储过程给出不完整的结果

sql - 用于测试主键是否存在的脚本

c# - 调用多个存储过程最快的代码是什么?

sql-server - VBA CDate 与 SQL Server 2005 中的 Convert(datetime,) 不匹配

sql-server - 将 sql 2000 备份恢复到 sql 2008 后,使用 IDENTITY 列的过程因主键冲突而失败

SQL 合并 2 个表和数据透视表

sql - MSSQL - 授予除一个表之外的所有表的选择权限

c# - Entity Framework 核心 : default value when migrating nullable column to required

sql-server - SQL Server - 链接服务器,查询一种方式可以,但另一种方式呢?

sql-server - SQL 2005 实例不适用于 DNS