这是我的语法/问题
,CASE WHEN nullif(ltrim(A),'') IS NOT NULL OR nullif(ltrim(B),'') IS NOT NULL THEN NULL
WHEN nullif(ltrim(C),'') IS NOT NULL THEN (
CASE WHEN nullif(MM,'') IS NOT NULL THEN MM
WHEN NN IS NOT NULL THEN XX
WHEN NN IS NULL THEN concat(UPPER(YY), ' ', UPPER(XX))
END
)
WHEN nullif(ltrim(D),'') IS NOT NULL OR nullif(ltrim(E),'') IS NOT NULL THEN concat(UPPER(XX), ' ', UPPER(YY))
ELSE ' '
END as 'Data_Item'
我们有一系列的陈述需要评估。if字段 A
或者 B
不是空的那我们就拉 NULL
if字段 C
如果不为null,那么我们计算一个嵌套的case语句,这就是我的代码有问题的地方。
if字段 C
不为空,我们应该计算字段 MM
如果 MM
不是空的我们应该返回 MM
(这是我应该得到的,但我没有)。
我们继续评估,如果 NN
我们拉的不是空的 XX
如果 NN
我们连接的是null吗 YY space XX
最后是if字段 D
不是null或字段 E
如果不为null,则将字段串联起来 XX space YY
.
否则我们只返回一个空格然后结束
简言之,这是一个半复杂的系列case语句,如果第二个场景是真的,我们必须像3或4个嵌套语句那样进行计算。直到我们找到真相。
不管出于什么原因,我的数据总是返回最后一条语句(d为真),而不是嵌套语句。
1条答案
按热度按时间9w11ddsr1#
这是您的案例:
似乎符合你的逻辑。。。