SQL Server 2014。
我有一个查询,该查询具有一个名为“ sitecode”的字段。我选择数据并按站点代码排序。我需要一个帮助者列,只要站点代码更改,其值就会从1变为0。
如:
Helper SiteCode
1 A
1 A
1 A
0 B
1 C
1 C
0 D
0 D
答案 0 :(得分:3)
SQL表表示无序集。您需要一列来指定顺序。如果您有一个,那么lag()
会做您想要的事情:
select t.*,
(case when lag(sitecode) over (order by ?) <> sitecode then 0 else 1 end) as flag
from t;
?
用于指定顺序的列。
答案 1 :(得分:1)
您可以使用dense_rank()
获得每个sitecode
的连续数字,并计算模2以获得交替的1和0。
SELECT sitecode,
dense_rank() OVER (ORDER BY sitecode) % 2 helper
FROM elbat;