需要帮助在bigquery中构建解码语句

问题描述 投票:0回答:1

我有一个 Oracle 查询,需要将其转换为 bigquery 查询并需要帮助,我不知道如何转换它,下面是我的 Oracle 代码

解码(to_char(c.last_updated_time +3, 'D') ,7 , c.last_updated_time +5 ,1 ,c.last_updated_time +5, 2, c.last_updated_time +5,3, c.last_updated_time +4, c.last_updated_time +3) FollowUP

我需要在bigquery查询中转换相同的内容,任何帮助都会被应用

sql google-cloud-platform google-bigquery oracle-sqldeveloper
1个回答
0
投票

尝试如下所示

SELECT
  CASE
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '6' THEN DATE_ADD(c.last_updated_time, INTERVAL 5 DAY)
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '7' THEN DATE_ADD(c.last_updated_time, INTERVAL 5 DAY)
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '1' THEN DATE_ADD(c.last_updated_time, INTERVAL 5 DAY)
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '2' THEN DATE_ADD(c.last_updated_time, INTERVAL 4 DAY)
    ELSE DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)
  END

请参阅下面的示例 - 您可以使用它进行测试

WITH data AS (
  SELECT CURRENT_TIMESTAMP() AS last_updated_time
)
SELECT
  CASE
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '6' THEN DATE_ADD(c.last_updated_time, INTERVAL 5 DAY)
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '7' THEN DATE_ADD(c.last_updated_time, INTERVAL 5 DAY)
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '1' THEN DATE_ADD(c.last_updated_time, INTERVAL 5 DAY)
    WHEN FORMAT_DATE('%u', DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)) = '2' THEN DATE_ADD(c.last_updated_time, INTERVAL 4 DAY)
    ELSE DATE_ADD(c.last_updated_time, INTERVAL 3 DAY)
  END
FROM data AS c
© www.soinside.com 2019 - 2024. All rights reserved.