使用 CTE 根据 SQL 中的一个列值或条件更改特定列中的所有值

学习者

我有一张如下表:

p_id 1_m_ret 2_m_ret 3_m_ret 4_m_ret 5_m_ret
p_1 米_1 空值 1.1 3.1 空值 5.5
p_1 m_2 1.23 2.5 3.6 3.3 1.5
p_1 m_3 1.10 1.6 3.5 1.8 3.2

我想将基于 p_id 的列的值更改为 NULL 如果 p_id 的列中有任何 NULL 并且结果如下表所示:

p_id 1_m_ret 2_m_ret 3_m_ret 4_m_ret 5_m_ret
p_1 米_1 空值 1.1 3.1 空值 5.5
p_1 m_2 空值 2.5 3.6 空值 1.5
p_1 m_3 空值 1.6 3.5 空值 3.2

我能够在本地使用自定义函数和存储过程来实现这一点。但是我需要使用 CTE(没有函数或存储过程)来实现它,有什么建议吗?

JS

你的问题可能需要澄清一点,但我想我明白了。如果 p_id 的列中有任何 NULL,则您希望该列在 p_id 的任何地方都为 NULL。否则,就保持原样。

所以如果这是准确的,试试这个:

CASE WHEN FIRST_VALUE(1_m_ret) OVER (PARTITION BY p_id ORDER BY 1_m_ret ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) IS NULL THEN NULL ELSE 1_m_ret END

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQL:使用IIF的CTE

使用递归CTE的SQL联接

根据SQL Server中另一个列值的条件返回更新的列值

使用Tidyverse根据另一个数据框列中的值有条件地替换数据框列中的值

仅在使用CTE时显示唯一值-SQL Server

使用熊猫根据特定列中的条件替换日期值

根据另一个列中的值计算和汇总列(SQL)

使用CTE生成SQL中的测试数据

使用CTE筛选多个列的SQL递归查询

Oracle SQL Query根据另一个表中的条件更改列标题

根据另一个表中的列值对列使用检查约束

如何根据sql server中的where条件获取表中所有列的值的不同计数?

SQL:从CTE条件更新表中的2个不同列

SQL中的递归CTE

SQL-使用CTE对另一个CTE的引用

使用MySQL根据另一个表中的列数更新列中的值

SQL Server:选择最小值,并在不使用CTE的情况下返回该分钟的所有列信息

根据SQL Server中的条件从表中检索列值

使用sql根据列值组合记录

SQL:根据行之一中的值和条件为所有行选择值

根据与 CTE 的连接更新列值

SQL 中的 Cte 内的 Cte

SQL如何根据另一个表中满足的条件显示列值

如何根据SQL中另一个的值计算各种总和列?

使用 SQL 根据条件排序

使用循环根据特定列值识别数据框中的所有实例

如何根据另一个列值连接 SQL 中的列值

如何使用SQL从其他列中只有一个特定值的列中提取值?

根据 R 中数据框中所有其他列中的字符串值,使用 dplyr 创建一个新列