ことがUNION(カンマ操作)だ、
使用シンプルな労働組合のピボットされていません - しかし列の数はありますか?
転置する必要がある列と同数のSELECTを持つことで、tempという名前のサブクエリでARRAYの作成を維持する必要があります。以下の例では、あなたの質問に3つあります。 tables.get APIで積載テーブルスキーマによって、クエリの下に構築しながらschema's fieldsをループして、最終的にそれを実行している - あなたの選択のクライアントにコーディングすることによってではなく、この部分のavoid the manual work
に方法はありません
。
再び - これはあなたがそうここ
探しているもののように見えていないクライアントのコーディングが必要、ここで私達は行く:
WITH temp AS (
SELECT B,
ARRAY(
SELECT AS STRUCT 't1' AS B1, t1 AS Value UNION ALL
SELECT AS STRUCT 'm1' AS B1, m1 AS Value UNION ALL
SELECT AS STRUCT 'p1' AS B1, p1 AS Value
) AS bb
FROM YourTable
)
SELECT B, bb.B1 AS B1, bb.Value AS Value
FROM temp t, t.bb
あなたは
WITH YourTable AS (
SELECT 'a' AS B, 1 AS t1, 2 AS m1, 3 AS p1 UNION ALL
SELECT 'b' AS B, 4 AS t1, 5 AS m1, 6 AS p1 UNION ALL
SELECT 'c' AS B, 7 AS t1, 8 AS m1, 9 AS p1 UNION ALL
SELECT 'd' AS B, 10 AS t1, 11 AS m1, 12 AS p1 UNION ALL
SELECT 'e' AS B, 13 AS t1, 14 AS m1, 15 AS p1 UNION ALL
SELECT 'f' AS B, 16 AS t1, 17 AS m1, 18 AS p1
),
temp AS (
SELECT B,
ARRAY(
SELECT AS STRUCT 't1' AS B1, t1 AS Value UNION ALL
SELECT AS STRUCT 'm1' AS B1, m1 AS Value UNION ALL
SELECT AS STRUCT 'p1' AS B1, p1 AS Value
) AS bb
FROM YourTable
)
SELECT B, bb.B1 AS B1, bb.Value AS Value
FROM temp t, t.bb
これでそれをテストすることができますしかし、私が提供したテーブルは、これを行うためのテーブルの単純化されたバージョンです。私は数百のB \ B1s値を持っているので、私は手動作業を避ける必要があります。 –
データベースにSQLコードを記述する構文はありません。この場合、SQL構文を生成するためにコーディング言語を使用する必要があります。 – Pentium10
私はそれに頼らなければならないことを恐れていました。ご協力ありがとうございました! –