表达式给出错误输出的情况

问题描述 投票:0回答:1

寻求下表中的解决方案。我有 ID、状态、案例功能和所需的输出列。

我的查询是显示取消状态是否针对 ID,并且同一 ID 的另一行是否为 NULL,则更改为 2,否则为 1。

提前致谢

enter image description here

我想说的是“case when Case Function = 1 and Case Function = 2 then 2 else 1 end”作为所需的输出。

但是,当我写上面的表达式时,当我的状态为已取消时,我得到的所需输出为 1 而不是 2。

sql sql-server
1个回答
0
投票

如果您的数据始终采用这种形式,这意味着

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;

看到这个样本小提琴

如果这还不够,并且您需要更复杂的解决方案,请编辑问题并解释逻辑应涵盖的所有可能的用例。

© www.soinside.com 2019 - 2024. All rights reserved.