[英]Get custom Distinct Values from column table
由於您似乎並不在乎需要返回哪個“分支”,因此您只需在CTE
使用row_number
即可為每個ID
值僅返回一個結果:
declare @t table(ID int,Name varchar(20));
insert into @t values
(10,'Manoj (CS)')
,(10,'Manoj (IS)')
,(20,'Ajay (CS)')
,(20,'AJAY (IS)')
,(30,'Sunjay(EC)')
,(40,'Lina(IS)')
,(40,'Lina(CS)')
,(40,'Lina(EC)')
,(50,'Mary(IS)')
,(50,'Mary(EC)');
with d as
(
select ID
,Name
,row_number() over (partition by ID order by Name) as rn
from @t
)
select ID
,Name
from d
where rn = 1;
輸出:
+----+------------+
| ID | Name |
+----+------------+
| 10 | Manoj (CS) |
| 20 | Ajay (CS) |
| 30 | Sunjay(EC) |
| 40 | Lina(CS) |
| 50 | Mary(EC) |
+----+------------+
但是,如果確實喜歡(CS)
分支,則需要稍微更改row_number
:
with d as
(
select ID
,Name
,row_number() over (partition by ID
order by case when right(Name,4) = '(CS)'
then 1
else 2
end
,Name
) as rn
from @t
)
select ID
,Name
from d
where rn = 1;
您可以對TIES
使用row_number()
函數:
select top (1) with ties *
from table t
order by row_number() over (partition by id order by name);
如注釋中所述:更改數據模型。
如果您必須按原樣使用表格,那么您需要做的是:所有學生ID,每個學生ID都可以隨意選擇一個麩皮/對象名稱。 這可以通過簡單的聚合來實現:
select id, min(name) from mytable group by id;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.