sql - 如何根据 SQL 中其他两列的值添加新列?
问题描述
我有下表(见附件)。我想生成 SQL 代码,st 如果任何学校在第 3 阶段开始,学校将获得 1 的值。如果学校也经历了第 1 阶段或第 2 阶段(或两者),则该值应为 0。
目前,我只有从数据库生成的前 2 列。我需要包含额外的列,但我不知道如何为此实现 SQL 代码。
我对 SQL 很陌生,因此将不胜感激任何帮助。
解决方案
您可以使用窗口函数:
select t.*,
min(case when phase in ('Phase1', 'Phase2') then 0
when phase = 'Phase3' then 1
end) over (partition by school) as new_column
from t;
推荐阅读
- typescript - 如何比较两个数组并在打字稿中将缺失的元素从大到短添加?
- python - 使用带有len()的范围函数在python中打印xml文件中的行和列
- arrays - 将字符串数组传递给从用户那里获取字符串的函数
- functional-programming - 长度函数的尾递归版本是否在运行时节省了堆栈空间?
- javascript - 失败:在业力测试中无法读取 null 的属性“点击”
- vba - 每周打开相同的工作簿但路径不同
- algorithm - 二分查找的最高索引
- java - 如何在类构造函数中使用 JPopupMenu actionlistener?
- linux - ubuntu 20.04.01 和它从源代码编译的 netcat 命令选项区别
- javascript - 反应中的 CSS 模块