programing

마리아의 동적 피벗 열 이름에 공백이 있습니다.DB

topblog 2023. 6. 12. 21:04
반응형

마리아의 동적 피벗 열 이름에 공백이 있습니다.DB

여기 아주 간단한 예가 있습니다.

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'max(case when NAME = ''',
      NAME,
      ''' then value end) AS ',
      replace(NAME, ' ', '_')
    )
  ) INTO @sql 
FROM
  sourcetable;

SET @sql = CONCAT('SELECT Date, ', @sql, ' from sourcetable group by date');


PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

전체 예: dbfidle

피벗 테이블의 열 이름이 이전에 NAME 열에 있었던 이름과 이전에 있었던 모든 문자와 정확히 일치했으면 합니다.이 프레젠테이션은 다른 시스템에서 사용되기 때문에 어떤 이유에서인지 필요합니다.

어떻게 해결해야 하나요?대체품 같은 거?

공백을 다음과 같은 밑줄로 대체하는 대신 별칭을 강조 그레이브로 마무리할 수 있습니다.

SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
          CONCAT('MAX( CASE WHEN name = ''',NAME,''' THEN value END) AS `',NAME,'`')
  )
  INTO @sql 
  FROM sourcetable;

SET @sql = CONCAT('SELECT Date, ', @sql, ' FROM sourcetable GROUP BY date');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END

Demo

언급URL : https://stackoverflow.com/questions/68162254/spaces-on-dynamic-pivot-column-name-in-mariadb

반응형