组合数组大查询

时间:2019-07-18 13:48:29

标签: sql google-bigquery

我有一个数组,其中有2个字段(产品名称和产品持续时间),并希望将它们组合成一行。

通过使用SPLIT(由于transactionID是唯一的并且需要由此拆分,我需要做的到这一步),它自动为我创建了一个看起来像这样的数组:

Transaction ID    ProductName       ProductDuration

1234               Ents                14D
                   Movies               7D
                   Sports              NONE 
---------------------------------------------------------
5678               Movies                7D
                   Kids                 14D

这是我用来进入当前阶段的代码:

SELECT
TransactionID
,SPLIT ( c_ProductName, "|") as ProductName 
,SPLIT ( c_ProductTrialDuration , "|") as ProductDuration 

理想情况下,如以下示例所示,我想要类似

Transaction ID     ProductName_Duration
---------------------------------------------------------
1234               Ents-14D
                   Movies-7D
                   Sports-NONE
---------------------------------------------------------
5678               Movies-7D
                   Kids-14D

我已经尝试了ARRAY_CONCAT,但这只是在下面的产品名称中添加了持续时间(有点像联合)。

如果有人知道如何解决这个问题,那就太好了!!

谢谢

1 个答案:

答案 0 :(得分:3)

以下BigQuery标准SQL示例

Sub CreateComboBox1()
    With ActiveSheet.OLEObjects.Add(ClassType:="Forms.ComboBox.1", _
                Link:=False, DisplayAsIcon:=False, Left:=50, Top:=80, Width:=100, _
                Height:=15)
        With .Object
            .AddItem "Date"
            .AddItem "Player"
            .AddItem "Team"
            .AddItem "Goals"
            .AddItem "Number"
        End With
    End With
End Sub

有结果

#standardSQL
WITH `project.dataset.table` AS (
  SELECT 1234 id, ['Ents','Movies','Sports'] ProductName, ['14D','7D','NONE'] ProductDuration UNION ALL
  SELECT 5678, ['Movies','Kids'], ['7D','14D']
)
SELECT id,
  ARRAY(SELECT CONCAT(name, '-', duration) 
    FROM UNNEST(ProductName) name WITH OFFSET
    JOIN UNNEST(ProductDuration) duration WITH OFFSET
    USING(OFFSET)
  ) ProductName_Duration
FROM `project.dataset.table`