に行を変換します。月も繰り返すことができます。しかし、月の値を量の値で列に転記したいのですが、mysqlで動的にそれを試してみると、別の値しか返すことができないため、私は許可しません。MySQLやPHPは、私は、テーブルのこの種を持っている列
以下のコードから別のものを削除しようとしましたが、機能しません。何かご意見は?
CREATE DEFINER=`root`@`localhost` PROCEDURE `test`()
BEGIN
SET group_concat_max_len=2048;
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(month = ''',
month,
''', amount, NULL)) AS ',
month
)
) INTO @sql
FROM tmp_results;
SET @sql = CONCAT('SELECT r.account,
r.region, ',
@sql, '
FROM tmp_results r
LEFT JOIN accounts AS a
on r.account_id = a.id
GROUP BY r.account');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
は、PHPのための答えを持っている場合は、私もそれを歓迎し、laravel 5でコレクションを使用しようと、まだ何もしません。私はこれを解決するために私の頭を数日間叩いています。
「うまくいきません」はあまり具体的ではありません。何がうまくいかず、何のエラーがありますか?サーバの設定(例えば5.7デフォルト設定)によっては、 'select'の中で' r.region'を 'region(region)'に変更するか、 'GROUP BY r.account、r 'を使う必要があります。 'tmp_results'か' @ sql'が空であるかどうかをチェックしない限り、その場合はエラーになりますが、そうではないようですこの問題は 'month 'に無効な値がある場合、' '''や空白、 ' - '、...など)無効であれば動作しません。 – Solarflare
は意味しません、私が望む結果を返しませんでした。それは私が表示する必要があった他の月を省略しました。 – Dhenn
それは働いています、私は期待した結果を返していません – Dhenn