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`
我有一个要求,当前类型是 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`