簡體   English   中英

在列SQL Server中顯示具有不匹配值的記錄

[英]Display Records With Non-Matching Values in a Column SQL Server

我正在嘗試創建一個查詢以查找特定列( ID )中的所有重復值,然后僅顯示第二列( 名稱 )不匹配的記錄的所有值。 名稱ID字段(復合鍵)應該與創建的記錄數相同,但我找到了一些使用相同ID的不同名稱的記錄。

 <table> <tr> <th>Name</th> <th>ID</th> <th>Date</th> <th>Time</th> </tr> <tr> <td>Williams</td> <td>55555</td> <td>2/13/2016</td> <td >11:39am</td> </tr> <tr> <td>Williams</td> <td>55555</td> <td>3/23/2016</td> <td>9:20am</td> </tr> <tr> <td >Johnson</td> <td>55555</td> <td >5/13/2016</td> <td >2:56pm</td> </tr> <tr> <td>Williams</td> <td>55555</td> <td>2/13/2016</td> <td>11:39am</td> </tr> <tr> <td >Jackson</td> <td>99999</td> <td>9/1/2016</td> <td >8:09am</td> </tr> <tr> <td >Smith</td> <td >77777</td> <td >10/10/2016</td> <td >3:03am</td> </tr> </table> 

查詢應返回第3行( Johnson記錄 )作為與多個記錄中使用重復ID的位置不匹配的記錄。 我嘗試了不同的方法但沒有得到預期的結果。

如果我正確理解了問題,您希望使用通常由其他名稱使用的ID來查找名稱的位置。

create table [table] 
(
    Name varchar(50),
    ID int,
    [Date] date,
    [Time] time
);

insert into [table] values('Williams', 55555, '13-feb-2016', '11:39:00');
insert into [table] values('Williams', 55555, '23-mar-2016', '09:20:00');
insert into [table] values('Johnson', 55555, '13-feb-2016', '11:39:00');
insert into [table] values('Williams', 55555, '13-feb-2016', '11:39:00');
insert into [table] values('Jackson', 99999, '01-sep-2016', '11:39:00');
insert into [table] values('Smith', 77777, '10-oct-2016', '11:39:00');

with cte as (
    select id, name
    from [table]
    group by id, name 
    having count(*) > 1
)
select *
from [table]
inner join cte on [table].id = cte.id 
and [table].name != cte.name

編輯:添加數據,以便我可以驗證解決方案

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM