Как использовать оператор CONCAT с оператором CASE в BigQuery? - PullRequest
0 голосов
/ 15 января 2019

Можно ли использовать CONCAT с оператором CASE в BigQuery? Если так, то как?

Когда мы пробуем этот код, он выдает ошибку ниже:

SELECT 

CONCAT(
     "Age:",
     CASE WHEN Age IS null THEN "" ELSE Age END AS Age
) AS AgeString

FROM [our table] 

Ошибка: обнаружено "" AS "" AS "" в строке 5, столбец 49. Ожидалось: ")" ...

Ответы [ 2 ]

0 голосов
/ 15 января 2019

В качестве альтернативы - если по какой-то причине этот псевдоним является «важным» для вас, например, из-за документирования предполагаемого и / или создания более подробного / описательного кода - вы можете заключить CASE в SELECT, как показано ниже

#standardSQL
SELECT CONCAT(
  "Age:",
  (SELECT CASE WHEN Age IS NULL THEN "" ELSE Age END AS Age)
) AS AgeString
FROM `project.dataset.table`   
0 голосов
/ 15 января 2019

Проблема здесь:

SELECT 

CONCAT(
     "Age:",
     CASE WHEN Age IS null THEN "" ELSE Age END AS Age  -- <- this alias
) AS AgeString

FROM [our table] 

Поскольку вы не можете поместить псевдоним в выражение, этот запрос возвращает ошибку с использованием устаревшего или стандартного SQL. Исправление заключается в удалении псевдонима:

SELECT 

CONCAT(
     "Age:",
     CASE WHEN Age IS null THEN "" ELSE Age END
) AS AgeString

FROM [our table] 
...