sql >> データベース >  >> RDS >> Mysql

動的ピボットテーブルの列mysql

    動的SQLは、1つを除いて問題ありません。あいまいな列project_idがあります 2番目の左の結合で、pt.project_idに置き換えます。 またはtrd.project_id そしてそれは望ましい結果を与えるでしょう。

    SET @sql = NULL;
        SELECT
          GROUP_CONCAT(DISTINCT
            CONCAT(
              'max(case when dc.demographic_name = ''',
              demographic_name,
              ''' then trd.demographic_value end) AS ',
              replace(demographic_name, ' ', '')
            )
          ) INTO @sql
        from demographic_categories;
    
    SET @sql = CONCAT('SELECT pt.test_id, pt.group_id,
    ', @sql,'
    from test_demographic_requirements trd
    LEFT JOIN demographic_categories dc ON trd.demographic_id = dc.demographic_id
    LEFT JOIN project_tests pt ON pt.test_id = trd.test_id and pt.project_id =1
    group by pt.test_id;');
    
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    
    DEALLOCATE PREPARE stmt;
    

    私はそれをレキスターで実行しました。リンクは次のとおりです: dynamic_pivot_test




    1. Oracle MobileCloudServiceの概要

    2. MYSQL 5.7でのネイティブJSONサポート:MYSQLでのJSONデータ型の長所と短所は何ですか?

    3. php mysql Group Byは、最初のレコードではなく、最新のレコードを取得します

    4. mysqlテーブル列が存在するかどうかを確認するにはどうすればよいですか?