提前谢谢大家。我从来没有用 SQL 进行过旋转,并且在尝试了很长一段时间后,我还没有成功。
下面是我的数据集的一个小样本,我希望按月旋转数据,并每年都有单独的行。
以下内容来自:
SELECT source,
region,
period,
revenue,
tax_rate,
users
FROM source_data
理想情况下,所需的输出看起来类似于下面的内容,但我只是不确定如何使用 SQL 达到这一点:
我在 BigQuery 上使用了三个数据透视来实现与上面的图像类似的效果。如下询问。
WITH
table_a AS (
SELECT
*EXCEPT(period),
SPLIT(period,"-")[
OFFSET
(0)] AS period,
FORMAT_DATE('%B', CAST(CONCAT(period,"-01") AS date)) AS month,
FORMAT_DATE('%B', CAST(CONCAT(period,"-01") AS date)) AS month2,
FORMAT_DATE('%B', CAST(CONCAT(period,"-01") AS date)) AS month3
FROM
`optimal-weft-418017.78268160.78268160_01` ),
table_b AS (
SELECT
*
FROM
table_a PIVOT ( MIN(revenue) AS revenue FOR month IN ('January') )),
table_c AS (
SELECT
*
FROM
table_b PIVOT ( MIN(tax_rate) AS tax_rate FOR month2 IN ('January') ) ),
table_d AS (
SELECT
*
FROM
table_c PIVOT ( MIN(Users) AS Users FOR month3 IN ('January') ) )
SELECT
SOURCE,
region,
period,
CONCAT("Revenue: ",revenue_january,"\nTax Rate: ",tax_rate_January,"\n Users: ",users_january) as info
FROM
table_d
输入表示例:
来源 | 地区 | 期间 | 收入 | 税率 | 用户 |
---|---|---|---|---|---|
来源A | I区 | 2021-01 | 18440150.48 | 0.14 | 0 |
来源B | 第七区 | 2021-01 | 272382497.2 | 0.14 | 30575905 |
来源C | 第六区 | 2021-01 | 23244127.87 | 0.14 | 2514972 |
示例输出表:
来源 | 地区 | 期 | 一月信息 |
---|---|---|---|
来源A | I区 | 2021 | 收入:18440150.48,税率:0.14,用户:0 |
来源B | 第七区 | 2021 | 收入:272382497.2,税率:0.14,用户:30575905 |
来源C | 第六区 | 2021 | 收入:23244127.87,税率:0.14,用户:2514972 |
需要注意的一些事项:您必须将三个数据透视表中的剩余月份添加为“二月”、“三月”等,才能根据上图获得每个月的汇总数据。