数式を使用して sql ステートメントを生成できます。
ステップ1。ヘッダーのみを取得するには、importrange を使用します。
次の数式を Sheet1 A1 に貼り付けます。
=transpose(IMPORTRANGE("long-hairy-key","MASTER!A1:BN1"))
フィールド名の垂直リストを作成するには、データを転置する必要があります。
ステップ2。列番号を追加します。
この数式を B1 に貼り付けます。
=ARRAYFORMULA(ROW(OFFSET(A1,,,counta(A:A))))
このステップでは、次のようなテーブルを取得します。
A B
1 FieldName1 1
2 FieldName2 2
3 FieldName3 3
4 FieldName4 4
5 FieldName5 5
Step3. SQL ステートメントを結合します。
列 C を使用して、クエリで選択する列を示します。
A B C
1 FieldName1 1 1
2 FieldName2 2
3 FieldName3 3 1
4 FieldName4 4
5 FieldName5 5 1
フリー セル (F1) で次の式を使用します。
="select Col"&JOIN(", Col",FILTER(B:B,C:C=1))
私の場合、この式は string を与え、select Col1, Col3, Col5
これはクエリ式で使用できます:
=query(IMPORTRANGE("long-hairy-key","MASTER!A:BN"), F1)
追加の列を使用して、SQL をよりスマートにしたり、句を追加したりしwhere
ます。order by
label
アップデート
したがって、この段階的な解決策では、列の再配置に関する問題は解決されません。
トリックは、列名リストを使用して値として保存することです。
- ステップ 1 の式を貼り付けます。
=transpose(IMPORTRANGE("long-hairy-key","MASTER!A1:BN1"))
- それをコピーする→スペースを貼り付ける→値
次に、現在の最初の番号のリストを作成するために、手順 1 と 2 を実行する必要があります。
そして、実際には 2 つのテーブルができます。最初のものは、ステップ 1 とステップ 2 の式によって生成された実際のフィールド リストとフィールド番号を保持します。ここにありTable1
ます:
A B
1 FieldName1 1
2 FieldName2 2
3 FieldName3 3
4 FieldName4 4
5 FieldName5 5
2 番目のテーブルには SQL 設定が含まれます。こちらTable2
です::
A B C
1 FieldName1 1 1
2 FieldName3 3
3 FieldName2 2 1
4 FieldName4 4
5 FieldName5 5 1
その中のフィールド名は、値として入力する必要があります。列 B にはvlookup
関数が含まれます。
= vlookup(A1, table1!A:B, 2, 0)
またはさらにArrayFormula
:
= arrayformula(vlookup(offset(A1,,,counta(A1:A)), table1!A:B, 2, 0))
開始する必要があるのはそれだけです。次に、クエリをよりスマートにします。