0
我有如下表格。SQL Server顯示不匹配的記錄
create table #test (NAME varchar(100),TAGint,checkVAL varchar(1),CATEGORY int)
insert into #test values('jkl',1,'y',100)
insert into #test values('abc',1,'y',100)
insert into #test values('abc',1,'y',101)
insert into #test values('abc',2,'n',102)
insert into #test values('abc',3,'n',103)
insert into #test values('xyz',2,'y',104)
insert into #test values('xyz',1,'y',105)
insert into #test values('pqr',1,'y',105)
insert into #test values('pqr',1,'y',106)
insert into #test values('pqr',1,'y',106)
現在我想告訴那些在列名稱,標籤,checkVal不同勢值的記錄。 這就是我所做的。
select * from #test
;with cte as
(
select *,row_number() over(partition by NAME,TAG,checkVAL order by CATEGORY) as rownum
from #test
)
select * from cte
where rownum=1
這就是正在返回
NAME TAG checkVAL CATEGORY rownum
-----------------------------------------
abc 1 y 100 1
abc 2 n 102 1
abc 3 n 103 1
jkl 1 y 100 1 --> This row should not come
pqr 1 y 105 1 --> This row should not come
xyz 1 y 105 1
xyz 2 y 104 1
什麼我想的是,對於列名的值,如果值是TAG或checkVAL或兩者不同,則這些行只應所示。
下面
行jkl 1 y 100 1
不應顯示,因爲jkl
沒有其他行匹配。
以下行不應顯示
pqr 1 y 105 1
因爲NAME列值pqr
所有行TAG和checkVAL有相同的價值觀列
我想最好的辦法使用CTE。
+1簡單而完美的答案! –
這可以通過CTE來完成,我必須將解決方案插入到更復雜的程序 –
感謝好友..設法使用您的解決方案.. –