このトピックに関する別の質問を送信して申し訳ありませんが、これに関する多くの回答を読みましたが、うまくいかないようです。
参加して情報を取得する必要がある 3 つのテーブルがあります。テーブルの 1 つは 3 列のみで、データを垂直方向に格納します。そのデータを水平形式に転置したいと思います。
結合してプルすると、データは次のようになります。
SELECT
a.app_id,
b.field_id,
c.field_name,
b.field_value
FROM table1 a
JOIN table2 b ON a.app_id = b.app_id
JOIN table3 c ON b.field_id = c.field_id --(table3 is a lookup table for field names)
結果:
app_id | field_id | field_name | field_value
-----------------------------------------------------
1234 | 101 | First Name | Joe
1234 | 102 | Last Name | Smith
1234 | 105 | DOB | 10/15/72
1234 | 107 | Mailing Addr | PO BOX 1234
1234 | 110 | Zip | 12345
1239 | 101 | First Name | Bob
1239 | 102 | Last Name | Johnson
1239 | 105 | DOB | 12/01/78
1239 | 107 | Mailing Addr | 1234 N Star Ave
1239 | 110 | Zip | 12456
代わりに、次のようにしたいと思います。
app_id | First Name | Last Name | DOB | Mailing Addr | Zip
--------------------------------------------------------------------------
1234 | Joe | Smith | 10/15/72 | PO BOX 1234 | 12345
1239 | Bob | Johnson | 12/01/78 | 1234 N Star Ave | 12456
以前は、データで必要なすべての field_id を検索して、それぞれに CASE ステートメントを作成するという手段に頼っていました。ユーザーが使用しているアプリには複数の製品のデータが含まれており、各製品には異なるフィールドが含まれています。サポートされている製品の数と各製品のフィールドの数 (上記で示した基本的な例よりもはるかに多い) を考慮すると、それらを調べて大量の CASE ステートメントを書き出すには長い時間がかかります。
field_ids を検索して書き出すことなく、必要なものを達成するためのチートコードがあるかどうか疑問に思っていました。PIVOT 関数が私が探しているものである可能性が高いことはわかっていますが、正しく動作させることができないようです。
あなたたちが助けてくれると思いますか?