Есть ли функция SQL, которая позволит мне вводить определенные данные в зависимости от другого столбца - PullRequest
1 голос
/ 01 апреля 2020

Например, столбец 1 Дата начала и столбец 2 Дата окончания. 01.01.2020 | 31.03.2020 01.04.2020 | 30.06.2020 01.07.2020 | 10/31/2020

Столбец, который я пытаюсь создать, который будет зависеть от них, будет Quarter. Поэтому рядом с каждым будет Q1, Q2, Q3 и т. Д. c ...

Пока мой код выглядит так запрос не распознает его как функцию. Когда я запускаю с датой разбора, я получаю несоответствие ошибки между символом формата '2' и символом строки '%'. Также обратите внимание, что каждое поле в пользовательской таблице имеет тип STRING.

1 Ответ

1 голос
/ 01 апреля 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT
  user.p,
  user.e,
  CONCAT(user.p,user.pr,user.r) AS Territories,
  PARSE_DATE('%m/%d/%Y', start_date) AS Startdate,
  PARSE_DATE('%m/%d/%Y', end_date) AS EndDate,
  'Q' || CAST(EXTRACT(Quarter FROM PARSE_DATE('%m/%d/%Y', start_date)) AS STRING) AS Quarter,
  'Territory and Quota Program' Terrirtory_program
FROM `ods.simp.user`

Таким образом, вывод (если применить к образцу данных из вашего вопроса) будет как ниже (пропуская пользовательские c столбцы здесь)

Row Startdate   EndDate     Quarter Terrirtory_program   
1   2020-01-01  2020-03-31  Q1      Territory and Quota Program  
2   2020-04-01  2020-06-30  Q2      Territory and Quota Program  
3   2020-07-01  2020-10-31  Q3      Territory and Quota Program 

Чтобы проверить, поиграйте с приведенным выше примером - используйте приведенный ниже пример с примерами данных из вашего вопроса

#standardSQL
WITH `ods.simp.user` AS (
  SELECT '1/1/2020' start_date, '3/31/2020' end_date UNION ALL
  SELECT '4/1/2020', '6/30/2020' UNION ALL
  SELECT '7/1/2020', '10/31/2020' 
)
SELECT
  PARSE_DATE('%m/%d/%Y', start_date) AS Startdate,
  PARSE_DATE('%m/%d/%Y', end_date) AS EndDate,
  'Q' || CAST(EXTRACT(Quarter FROM PARSE_DATE('%m/%d/%Y', start_date)) AS STRING) AS Quarter,
  'Territory and Quota Program' Terrirtory_program
FROM `ods.simp.user`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...