如何在 Bigquery sql 中将多列反透视为行

How to unpivot multiple colums to rows in Bigquery sql

我正在努力 unpivot/pivot 使用 SQL。

我尝试了 BIGQUERY 文档中的 UNPIVOT 函数,但我通过使用下面的代码成功地只反转了一个列,但没有同时反转多个列

SELECT ... FROM
UNPIVOT(mail_sent FOR metric IN (mail_sent))

这是我得到的 table

month mail_sent mail_received mail_opened
01 2000 1900 500
02 2200 2000 700
03 1900 1800 400

这是我想要的,将 月份 保留在列中,将所有其余部分保留在行中:

values 01 02 03
mail_sent 2000 2200 1900
mail_received 1900 2000 1800
mail_opened 500 700 400

知道怎么做吗?非常感谢!

我找到了解决方案:

SELECT month, metric, value
  FROM final 
  UNPIVOT(value FOR metric IN (mail_sent, mail_received, mail_opened))
  ORDER BY 1

考虑以下方法

select * from (
  select * from your_table 
  unpivot(value for metric in (mail_sent, mail_received, mail_opened))
)
pivot (any_value(value) as _ for month in ('01', '02', '03'))       

如果应用于您问题中的示例数据 - 输出为