Предполагая, что у вас ограниченное количество строк (месяцев) и столбцов - вы можете использовать ниже
#standardSQL
SELECT col AS month,
MAX(IF(month = 'Jan-20', val, NULL)) AS Jan_20,
MAX(IF(month = 'Dec-19', val, NULL)) AS Dec_19,
MAX(IF(month = 'Nov-19', val, NULL)) AS Nov_19,
MAX(IF(month = 'Oct-19', val, NULL)) AS Oct_19,
MAX(IF(month = 'Sep-19', val, NULL)) AS Sep_19
FROM `project.dataset.table`,
UNNEST(['AmountSales', 'AmountDebit', 'DebitCreditPercent']) col,
UNNEST([CASE col
WHEN 'AmountSales' THEN AmountSales
WHEN 'AmountDebit' THEN AmountDebit
WHEN 'DebitCreditPercent' THEN DebitCreditPercent
END]) val
GROUP BY col
Вы можете протестировать / поиграть с выше, используя пример / фиктивные данные, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT 'Jan-20' month, 1 AmountSales, 2 AmountDebit, 3 DebitCreditPercent UNION ALL
SELECT 'Dec-19', 4, 5, 6 UNION ALL
SELECT 'Nov-19', 7, 8, 9 UNION ALL
SELECT 'Oct-19', 10, 11, 12 UNION ALL
SELECT 'Sep-19', 13, 14, 15
)
SELECT col AS month,
MAX(IF(month = 'Jan-20', val, NULL)) AS Jan_20,
MAX(IF(month = 'Dec-19', val, NULL)) AS Dec_19,
MAX(IF(month = 'Nov-19', val, NULL)) AS Nov_19,
MAX(IF(month = 'Oct-19', val, NULL)) AS Oct_19,
MAX(IF(month = 'Sep-19', val, NULL)) AS Sep_19
FROM `project.dataset.table`,
UNNEST(['AmountSales', 'AmountDebit', 'DebitCreditPercent']) col,
UNNEST([CASE col
WHEN 'AmountSales' THEN AmountSales
WHEN 'AmountDebit' THEN AmountDebit
WHEN 'DebitCreditPercent' THEN DebitCreditPercent
END]) val
GROUP BY col
с выходом
Row month Jan_20 Dec_19 Nov_19 Oct_19 Sep_19
1 AmountSales 1 4 7 10 13
2 AmountDebit 2 5 8 11 14
3 DebitCreditPercent 3 6 9 12 15