寻求下表中的解决方案。我有 ID、状态、案例功能和所需的输出列。
我的查询是显示取消状态是否针对 ID,并且同一 ID 的另一行是否为 NULL,则更改为 2,否则为 1。
提前致谢
我想说的是“case when Case Function = 1 and Case Function = 2 then 2 else 1 end”作为所需的输出。
但是,当我写上面的表达式时,当我的状态为已取消时,我得到的所需输出为 1 而不是 2。
如果您的数据始终采用这种形式,这意味着
case_function
的唯一可能值是 1 和 2,您可以简单地获取每个 id 的窗口最大值:
SELECT
id,
status,
case_function,
MAX(case_function)
OVER (PARTITION BY id) AS required_output
FROM yourtable
ORDER BY id;
看到这个样本小提琴
如果这还不够,并且您需要更复杂的解决方案,请编辑问题并解释逻辑应涵盖的所有可能的用例。