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

mysqlのピボット関数を使用してテーブルを事前に作成する

    GROUP_CONCATクエリの場合; stmtの場合、製品テーブルをproductと呼んでいます。 自体。ただし、結合クエリでは、製品テーブルをエイリアスpとして参照しています。 。最初のgroup_concatクエリは結合クエリの一部であるため、テーブルエイリアスを同じに保つ必要があります(5行目で変更を加えました)

    SET @sql = NULL;
    SELECT
      GROUP_CONCAT(DISTINCT
        CONCAT(
          'count(case when p.name = ''',  
          product.name,
          ''' then 1 end) AS ',
          replace(product.name, ' ', '')
        )
      ) INTO @pivotsql
    from product;
    
    SET @sql = CONCAT('SELECT omd.order_match_id, ', @pivotsql, ' from order_match_detail omd
    left join order_match om
      on omd.order_match_id = om.id
    left join product p
      on omd.product_id = p.id
      where om.order_status_id in (4, 5, 6, 8)
    group by omd.order_match_id');
    
    PREPARE stmt FROM @sql;
    EXECUTE stmt;
    



    1. 'データのロード'でのMysql権限エラー

    2. SQLServerが予期しない週番号を返す

    3. sqlalchemyのPostgresqlONCONFLICT

    4. SELECTの順序でPostgresINSERTINTO