CASE WHEN RN1 = (CASE RN2 WHEN WL.STAGE_NAME = FLS1.STAGE_NAME THEN RN1 END)+1 THEN STAGE_NAME END STAGE1 哪里错了?
时间: 2024-10-15 16:19:15 浏览: 23
这个SQL表达式看起来是在尝试使用CASE语句对`RN1`进行条件判断,并更新`STAGE_NAME`。但是有一些潜在的问题:
1. `RN1 = (CASE RN2 ... END)+1` 这部分可能有问题。如果`RN2`的情况不满足`WL.STAGE_NAME = FLS1.STAGE_NAME`,那么RN1不会自增。你需要确保`RN1`在所有情况下能得到正确的递增值。
2. `CASE RN2 WHEN WL.STAGE_NAME = FLS1.STAGE_NAME THEN RN1 END` 这里的比较可能会导致循环引用或错误,因为`RN1`和`RN2`可能都依赖于相同的比较条件。你需要明确`RN1`和`RN2`是如何关联的。
3. `END STAGE1`这部分似乎格式上不对,应该是结束整个CASE语句,而不是单独列出`STAGE_NAME`。
建议检查`RN1`, `RN2`, `WL`, 和 `FLS1`之间的数据关系,以及是否需要在更复杂的嵌套条件下处理`RN1`的值。正确编写应类似于这样:
```sql
CASE
WHEN RN1 = (
CASE
WHEN RN2 = NULL OR WL.STAGE_NAME != FLS1.STAGE_NAME THEN RN1
ELSE RN2 + 1
END
) THEN STAGE_NAME
END AS STAGE1
```
阅读全文