如何基于BQ中的嵌套字段值更新顶级列

时间:2020-09-30 10:32:36

标签: google-bigquery updates

我正在尝试使用以下case语句基于嵌套列值更新顶级列

UPDATE
  `project.database.table`
SET
  ReplaceTotal= (
  SELECT
    CASE
      WHEN DamageLineInfo.MessageCode='MO' AND DamageLineInfo.AutomatedEntry=TRUE AND DamageLineInfo.LaborInfo.LaborOperation='OPO' AND DamageLineInfo.LaborInfo.LaborType='LAB' AND DamageLineInfo.LaborInfo.LaborInclInd=FALSE THEN DamageLineInfo.LaborInfo.LaborAmt
      WHEN DamageLineInfo.LaborInfo.LaborOperation='OP9'
    OR DamageLineInfo.LaborInfo.LaborOperation='OP11'
    OR DamageLineInfo.LaborInfo.LaborOperation='OP5'
    OR DamageLineInfo.LaborInfo.LaborOperation='OP12'
    OR DamageLineInfo.LaborInfo.LaborOperation='OP10'
    OR DamageLineInfo.LaborInfo.LaborOperation='OP1'
    OR DamageLineInfo.LaborInfo.LaborOperation='OP21' THEN
    CASE
      WHEN DamageLineInfo.LaborInfo.LaborType='LAB' AND DamageLineInfo.LaborInfo.LaborInclInd=FALSE THEN DamageLineInfo.LaborInfo.LaborAmt
  END
  END as ReplaceTotal
  FROM
    UNNEST(ServiceBusEnvelope.Payload.RepairOrderFolderAddRq.DamageLineInfo) AS DamageLineInfo)
WHERE
  TRUE

运行查询时出现以下错误 标量子查询产生了多个元素

帮助我了解该错误。 如果错误是由于生成的数据具有值列表,那么请获取数据的第一个值。

1 个答案:

答案 0 :(得分:1)

如果错误是因为生成的数据具有值列表

是的,这就是原因

获取数据的第一个值

仅需添加Diff,如以下示例所示

LIMIT 1