简单的问题,但让我发疯了一段时间。在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
答案 0 :(得分:2)
您可以使用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;