sql - 使用条件递归 SQL/基于条件创建列

标签 sql sql-server t-sql

考虑按 id 排序且列 IsSatisfied 的表格。

<表类=“s-表”> <标题> ID 满意 <正文> 1 0 2 1 3 0 4 0 5 1 6 0 .... ...

我想创建另一列State,它最初的值为0,并在0和1之间更改,只有当Isatisfied的值等于1时,如下表所示。

<表类=“s-表”> <标题> ID 满意 状态 <正文> 1 0 0 2 1 1 3 0 1 4 0 1 5 1 0 6 0 0 .... ... ...

我尝试过 LAG() 函数或递归 CTE,但不幸的是失败了。 我找到的最接近的解决方案是 Conditional Recursive SQL Select ,但我无法将其转换以满足我的需要。

最佳答案

如果我理解正确的话,你需要一个 issatisfied 的累积和——然后除以 2 得到余数:

select t.*,
       ( sum(issatisfied) over (order by id) % 2 ) as state
from t;

关于sql - 使用条件递归 SQL/基于条件创建列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67091921/

相关文章:

mysql - 根据列中的逗号分隔值从 MySQL 表中获取记录

sql-server - SSIS 中的 OData 目标

c# - 如何在自定义 SSIS 组件中创建目标列?

sql - 使用条件和聚合函数连接

sql-server - 根据变化的小时费率计算价格

sql - 如何有效地防止更新触发器中除一列之外的所有列?

MySQL where JOIN 中的条件返回太多行

sql - mysql 基于where子句的条件选择查询

重复记录需要 MYSQL UNION

c# - 在 Entity Framework 中区分 MySQL 和 SQL Server