動的列を使用してmysqlのピボットテーブル
この質問は、動的な列でmysqlピボットテーブルを作成するという課題に対処します。ソリューションは、user_idが文字列として定義されると効果的に機能しますが、整数値に遭遇したときに失敗します。ただし、整数user_id値に関連する問題を解決するために、修正は動的sqlクエリ内で列名が構築される方法にあります。 group_concat(異なる concat( 'max(user_id =' ''の場合はケース ユーザーID、 ''それからスコアエンド) '、 ユーザーID )) )@sql
int user_id値は、列名として直接使用されているため、問題を引き起こします。これに対処するには、これらの値をバックティック( `)にラップする必要があります。修正されたコードはこれを調整します:
... group_concat(異なる concat( 'max(user_id =' ''の場合はケース ユーザーID、 ''それからスコアが終了する) `'、 user_id、 '`' )) )@sql
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS ', user_id ) ) INTO @sql
set @sql = null; 選択します group_concat(異なる concat( 'max(user_id =' ''の場合はケース ユーザーID、 ''それからスコアが終了する) `'、 user_id、 '`' )) )@sqlに 測定2から; @sql = concat( 'Select Inspection_date、'、@sql、 ' 測定から2 Group by Espention_date '); @sqlからstmtを準備します。 STMTを実行します。 deallocate stmt;
... GROUP_CONCAT(DISTINCT CONCAT( 'max(case when user_id = ''', user_id, ''' then score end) AS `', user_id, '`' ) ) INTO @sql
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3