Sql 在不同列值更改时标记列
SQL Server 2014 我有一个查询,其中有一个名为“sitecode”的字段。我选择数据并按站点代码排序。我需要一个helper列,当站点代码更改时,who的值从1更改为0 例如:Sql 在不同列值更改时标记列,sql,sql-server,tsql,Sql,Sql Server,Tsql,SQL Server 2014 我有一个查询,其中有一个名为“sitecode”的字段。我选择数据并按站点代码排序。我需要一个helper列,当站点代码更改时,who的值从1更改为0 例如: Helper SiteCode 1 A 1 A 1 A 0 B 1 C 1 C 0 D 0 D SQL表表示无序集。您需要一个列来指定顺序。如果您有一个,则lag()执行您想要的操作: select t.*,
Helper SiteCode
1 A
1 A
1 A
0 B
1 C
1 C
0 D
0 D
SQL表表示无序集。您需要一个列来指定顺序。如果您有一个,则lag()
执行您想要的操作:
select t.*,
(case when lag(sitecode) over (order by ?) <> sitecode then 0 else 1 end) as flag
from t;
选择t.*,
(当滞后(站点代码)超过(订购方?)站点代码时,则为0,否则为1结束)作为标志
从t;
?
用于指定排序的列。SQL表表示无序集。您需要一个列来指定顺序。如果您有一个,则lag()
执行您想要的操作:
select t.*,
(case when lag(sitecode) over (order by ?) <> sitecode then 0 else 1 end) as flag
from t;
选择t.*,
(当滞后(站点代码)超过(订购方?)站点代码时,则为0,否则为1结束)作为标志
从t;
?
用于指定排序的列。您可以使用densite\u rank()
为每个sitecode
获取一个连续数字,并计算模2以获得交替的1和0
SELECT sitecode,
dense_rank() OVER (ORDER BY sitecode) % 2 helper
FROM elbat;
您可以使用
densite\u rank()
为每个sitecode
获取一个连续的数字,并计算模2以获得交替的1和0
SELECT sitecode,
dense_rank() OVER (ORDER BY sitecode) % 2 helper
FROM elbat;
这是在Excel中输入用于条带格式的“帮助器列”所必需的。这是在Excel中输入用于条带格式的“帮助器列”所必需的。谢谢你,我不熟悉lag,我需要学习如何使用它。感谢这个例子。谢谢你,我不熟悉lag,我需要学习如何使用它。欣赏这个例子。