BigQuery SQL - 将 0 更改为 NULL,将 NUMERIC 更改为 STRING 类型和 PARSE DATETIME(单个查询)

BigQuery SQL - Change 0 to NULL, change NUMERIC to STRING type and PARSE DATETIME (single query)

我有一个要求,当前类型是 NUMERIC,但我需要它是 DATETIME,我目前正在与数据所有者合作,让他们转换数据类型,这样我就不必执行这些步骤了。

如上所述,需要将 NUMERIC 类型更改为 DATETIME,但我遇到了零值存在的问题。我目前已经编写了两个 SQL 查询来获得结果,但我希望能够在一个查询中完成。

看下面两个查询:

查询 1

SELECT 

MATERIAL,DESC,NUMBER,

CASE
    WHEN START_ACTUAL = 0 THEN NULL
    ELSE START_ACTUAL
    END AS START_ACTUAL,

CASE
    WHEN END_ACTUAL = 0 THEN NULL
    ELSE END_ACTUAL
    END AS END_ACTUAL,

FROM `SAMPLEFILE1`

查询 2

SELECT

MATERIAL,DESC,NUMBER,

PARSE_DATETIME('%Y%m%d%H%M%S', CAST(START_ACTUAL AS STRING)) AS START_ACTUAL,
PARSE_DATETIME('%Y%m%d%H%M%S', CAST(END_ACTUAL AS STRING)) AS END_ACTUAL,

FROM `SAMPLEFILE1_VIEW`

我敢肯定有人会马上告诉我,这很简单:)

提前致谢

您可以将 case 语句包装在 CAST 和 PARSE_DATETIME 中,但您可以只使用 nullif:

SELECT

MATERIAL,DESC,NUMBER,

PARSE_DATETIME('%Y%m%d%H%M%S', CAST(NULLIF(START_ACTUAL,0) AS STRING)) AS START_ACTUAL,
PARSE_DATETIME('%Y%m%d%H%M%S', CAST(NULLIF(END_ACTUAL,0) AS STRING)) AS END_ACTUAL,

FROM `SAMPLEFILE1_VIEW`