我想創建一個標志列,它告訴某些列中的值在被另一列分組時是否相同。例如,資料如下所示:
ID City Code
AB123 London CA1
AB123 New York CA1
CD321 Paris CA1
CD321 Tokyo DW2
我想添加一個新列,當資料按 ID 分組時,該列告訴 CODE 的值是否在組內變化。
ID City Code Flag
AB123 London CA1 0
AB123 New York CA1 0
CD321 Paris CA1 1
CD321 Tokyo DW2 1
我試圖通過使用partion by來分配行號,但它只是按組分配行號。
SELECT ID, City, Code,
ROW_NUMBER() OVER (PARTITION BY CODE, ID ORDER BY ID) as Flag
FROM table
ORDER BY ID
uj5u.com熱心網友回復:
考慮視窗函式是對的,如果視窗中的最小值等于視窗中的最大值,它們是相同的:
select *,
case when Min(code) over(partition by id)
= max(code) over(partition by id) then 0 else 1 end Flag
from t;
uj5u.com熱心網友回復:
您可以MIN()/MAX() OVER()用來比較Codeper的最高和最低值ID:
SELECT ID, City, Code, Flag = CASE
WHEN MIN(Code) OVER (PARTITION BY ID)
= MAX(Code) OVER (PARTITION BY ID) THEN 0 ELSE 1 END
FROM dbo.YourTableName;
這個小提琴中的作業示例。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/528471.html
標籤:sql服务器
上一篇:用于存盤權限的整數解碼位
