好的,这可能是一个非常简单的答案,但我无法弄清楚我在这里做错了什么,而我在其他地方找不到好的例子。 :)显然不是一个SQL专家,但无论如何工作。我试图将CASE语句的结果用作串联中的变量,但它不起作用。所以喜欢:
Select
Thing1,
Thing2,
Case
When a.business_seg = 'A' then '25'
...
Else ' '
End as BusinessSegment,
Thing2 || BusinessSegment as Thing3
FROM A_Table;
我知道串联可以与SELECT语句中的其他字段一起使用,而不使用CASE语句的结果。
如果我这样做:
Thing2 || Thing1 as Thing3
按预期工作。
这是某种绑定问题,我需要先将结果保存到表中或类似的东西???
提前致谢!
答案 0 :(得分:2)
在投影中,您需要使用表达式。您不能将别名用作值持有者。
这是一个解决方案:
Select
Thing1,
Thing2,
Case
When a.business_seg = 'A' then '25'
...
Else ' '
End as BusinessSegment,
Thing2 || Case
When a.business_seg = 'A' then '25'
...
Else ' '
End as Thing3
FROM A_Table;
或通过子查询
select Thing1, Thing2, Thing2 || BusinessSegment as Thing3 from
(Select
Thing1,
Thing2,
Case
When a.business_seg = 'A' then '25'
...
Else ' '
End as BusinessSegment
FROM A_Table);
答案 1 :(得分:1)
首先在子查询中创建BusinessSegment,然后您就可以将它与Thing2连接起来。问题是您正在连接尚未定义的变量。
或者如果您愿意,您可以直接连接,即。 Thing2 || (情况......)