简单的问题,但让我疯狂了一段时间。在Teradata中有下表
A B
112211
113311 56
226144 61
996688 66
005400
771277 对于col-B中的空白字段,需要从col-A中提取数字,例如:
SELECT A
CASE 'B'
WHEN 'B' IS NULL THEN SUBSTR('A',3,4)
END AS 'B'
FROM TABLE_T1;引用了一些文档,但没有在上面的查询中了解问题所在。这个查询将在MySQL上工作,但为什么不能在Teradata中使用。
预期O/P:
A B
112211 22
113311 56
226144 61
996688 66
005400 54
771277 12发布于 2018-10-26 23:48:58
您可以使用这种形式的case expression,注意,区别是case when ...而不是case b when ...。此外,单引号仅用于文字,双引号用于标识。(请注意您使用单引号的原因。)
SELECT
A
, CASE WHEN B IS NULL THEN SUBSTR(A,3,4)
ELSE B
END AS "B"
FROM TABLE_T1;但是您也可以使用coalesce()来实现这一点,我相信:
SELECT
A
, coalesce(B ,SUBSTR(A,3,4) AS "B"
FROM TABLE_T1;https://stackoverflow.com/questions/53017503
复制相似问题