Заменить значение в одном столбце значением из другого столбца в той же строке с определенным условием BQ - PullRequest
0 голосов
/ 07 августа 2020

Я хочу заменить значения в одном столбце значениями из другого столбца, если условие выполнено. Данные выглядят так:

FieldName Previous 
AA         1
null       1
null       0
BB         1
BB         1

Я хочу заменить значение 1 в столбце Previous на значение в FieldName в той же строке, но только если FieldName не равно null.

Вывод:

FieldName Previous 
AA         AA
null       1
null       0
BB         BB
BB         BB

Я прочитал документацию о CAST и REPLACE, но не смог применить ее к моему случаю.

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Ниже для BigQuery Standard SQL

#standardSQL
SELECT FieldName, 
  IF(FieldName IS NULL, Previous, FieldName) AS Previous
FROM `project.dataset.table`   

Вы можете поиграть с приведенными выше примерами данных из вашего вопроса, как в примере ниже

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 'AA' FieldName, '1' Previous UNION ALL
  SELECT NULL, '1' UNION ALL
  SELECT NULL, '0' UNION ALL
  SELECT 'BB', '1' UNION ALL
  SELECT 'BB', '1' 
)
SELECT FieldName, 
  IF(FieldName IS NULL, Previous, FieldName) AS Previous
FROM `project.dataset.table`  

с выводом

Row FieldName   Previous     
1   AA          AA   
2   null        1    
3   null        0    
4   BB          BB   
5   BB          BB   
0 голосов
/ 07 августа 2020

Вы можете использовать команду update для этого в той же таблице.

CREATE TABLE `testdataset.t1` (
  `FieldName` STRING,
  `Previous` STRING,
);

insert into `testdataset.t1`
values ('AA','1'), (null,'1'),(null,'0'),('BB','1'),('BB','1');

UPDATE `testdataset.t1`
SET Previous = FieldName
where FieldName is not null;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...