我有一個這樣的表格:
ID | name
45 Alex
98 Diana
32 Peter
98 Daniel
45 Alex
23 Bob
98 Jake
我需要找到所有ID相同但名字不同的行。
uj5u.com熱心網友回復:
你可以在這里使用first/last value()視窗函式:
with n as (
select *,
First_Value(name) over(partition by id order by (select null))n1,
Last_Value(name) over(partitionby id order by (select null) )n2
from t
)
select Id, Name
from n
where n1 != n2
uj5u.com熱心網友回復:
你可以使用exists:
select t.*
from mytable t.
where exists (select 1)
from mytable t2
where t2.id = t.id and t2.name <>/span> t.name
);
uj5u.com熱心網友回復:
視窗式計數通常是最有效的:
SELECT
t.ID。
t.name
FROM (
SELECT *,
c = COUNT() OVER (PARTITION BY T.name)
FROM YourTable t
) t
WHERE c > 1;
uj5u.com熱心網友回復:
SELECT
ID。
名稱。
CASE WHEN COUNT(ID) OVER(PARTITION BY ID) = 1 THEN 'OK' ELSE 'NOT OK' END AS CountID
FROM Table
GROUP BY ID, name
ORDER BY ID
例子:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/323113.html
標籤:
上一篇:HCNP Routing&Switching之BGP報文結構、型別和狀態
下一篇:改變資料表輸出的SQL問題
