我有這樣的資料。如果相同的id出現在下一行,我想標記為Yes。如果它不存在,則將其標記為 "否"。你能幫助我完成這個查詢嗎?

謝謝
uj5u.com熱心網友回復:
同一ID的多行和沒有其他列可以用來進一步縮小排序順序的問題是,你需要一個你可以依賴的順序。由于一般任務與下一行的ID進行比較的典型陳述句是LEAD,你在查詢中會有兩個ORDER BY子句,一個用于LEAD,一個用于查詢結果,你想以某種方式強迫它們服從相同的排序順序。ORDER BY id是不夠的。
最好和最簡單的方法可能是先對行進行編號,然后再對這個資料集進行處理。
with numbered
(
select
id,
row_number() over (order by id) as rn
from mytable
)
select
id,
case when id = lead(id) over (order by rn) then 'yes' else 'no' end as flag
from numbered
order by rn;
uj5u.com熱心網友回復:
你可以使用LEAD,獲得下一行的值。
SELECT。
CASE
WHEN ID = LEAD(ID) OVER (ORDER BY ID) THEN 'yes
ELSE 'no'
END
FROM [MyTableName]。
ORDER BY ID
您可以在LEAD 這里閱讀更多資訊。
uj5u.com熱心網友回復:
select ID。Lag(ID) OVER(Order byID desc) as [NextVal],
casewhen
Lag(ID) OVER(Order by ID desc) = ID THEN 'yes'/span>
ELSE 'no'
END as 'FLAG'/span>
from tableName
order by 1 , 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/306816.html
標籤:
上一篇:在嘗試執行Pythonmanage.pymigrate時出現錯誤
下一篇:用SQL查找表內連續出現的次數
