[英]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.