簡體   English   中英

Unpivot,拆分列,Pivot Bigquery/Postgresql

[英]Unpivot, Split Column, Pivot Bigquery/Postgresql

我有這樣的表:

舊表

然后我想把表改成這樣:

新表

我通常在 Power BI 查詢編輯器中執行此操作,但文件太大,所以我在另一個平台(如 Bigquery/Postgresql)中嘗試

謝謝

您可以交叉連接到 aa 值子句:

select t.fruits,
       u.*
from the_table t
  cross join lateral (
     values ('Store A', t.qty_store_a, t.value_store_a), 
            ('Store B', t.qty_store_b, t.value_store_b), 
            ('Store C', t.qty_store_c, t.value_store_c),
            ('Store BC', t.qty_store_bc, t.value_store_bc),
            ('Store DC', t.qty_store_dc, t.value_store_dc)
  ) as u(store, qty, value)

考慮以下解決方案(對於 BigQuery)

select Fruits, regexp_extract(Store, r'Qty_(.*?)_Value') Store, Qty, Value
from your_table
unpivot (
  (Qty, Value) for 
  Store in (
    (Qty_Store_A, Value_Store_A), 
    (Qty_Store_B_C, Value_Store_B_C), 
    (Qty_Store_D_C, Value_Store_D_C)
  )
)

如果應用於您問題中的示例數據 - output 是

在此處輸入圖像描述

而且,如果由於某種原因 RegEx 方式對您不起作用,您可以在上面的稍微修改的版本中顯式定義商店名稱

select Fruits, Store, Qty, Value
from your_table
unpivot (
  (Qty, Value) for 
  Store in (
    (Qty_Store_A, Value_Store_A) as 'Store_A', 
    (Qty_Store_B_C, Value_Store_B_C) as 'Store_B_C', 
    (Qty_Store_D_C, Value_Store_D_C) as 'Store_D_C'
  )
)

顯然,與相同的 output

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM