誰かが助けてくれると思いますが、私は悲しみを引き起こすSQL文を持っています。MySQL Pivotテーブルを使用しているときの動的AS
MAXのケース()を使用してピボットテーブルとして動作する、私のステートメントはうまくいきますが、私は手動でASカラム名を適用しています - これは動的に行うことができますか?
ここに私の現在の記述があります。
SELECT
u.prefix AS 'Title',
u.forename AS 'Forename',
u.surname AS 'Surname',
u.email AS 'Email Address',
u.update_time AS 'Register Date',
eg.name AS 'Event Group Registered',
e.name AS 'Session Registered',
MAX(CASE WHEN uv.user_type_variables_id = 1 THEN uv.value ELSE NULL END) AS 'Question2',
MAX(CASE WHEN uv.user_type_variables_id = 2 THEN uv.value ELSE NULL END) AS 'Question2',
MAX(CASE WHEN uv.user_type_variables_id = 3 THEN uv.value ELSE NULL END) AS 'Question1',
MAX(CASE WHEN uv.user_type_variables_id = 4 THEN uv.value ELSE NULL END) AS 'Question2',
MAX(CASE WHEN uv.user_type_variables_id = 5 THEN uv.value ELSE NULL END) AS 'Question1',
MAX(CASE WHEN uv.user_type_variables_id = 6 THEN uv.value ELSE NULL END) AS 'Question2'
FROM tbl_event_attendees AS ea
LEFT JOIN tbl_user AS u ON ea.user_id = u.id
LEFT JOIN tbl_event AS e ON ea.event_id = e.id
LEFT JOIN tbl_event_groups AS eg on e.group_id = eg.id
LEFT JOIN tbl_user AS u2 ON ea.guest_of_user_id = u2.id
LEFT JOIN tbl_user_variables AS uv on u.id = uv.user_id
WHERE ea.event_id =6
GROUP BY ea.id
My表は、この表の特定の行に複数の行が適用される可変表を含むいくつかの表を結合します。
したがって、列の名前を 'Question1'にするのではなく、uv.value
に適用される隣接する列 'name'を使用します。
MAX(CASE WHEN uv.user_type_variables_id = 14 THEN uv.value ELSE NULL END) AS uv.name,
これはどのように行うことができますか?
あなたはあなたのテーブルの詳細を与える必要があります。 – Blank
こんにちは、私は少し私のステートメントを拡張しました – gsusonline