1
저는 다소 신참 한 SQL 신참이지만 3 개의 테이블 사이에 피벗을 작성하려고합니다. 나는 아래의 쿼리를 가지고 있으며 그것은 MAX 호출 외에도 완벽하게 작동한다. 이로 인해 기본값보다 작은 값이 무시됩니다. 나는 아래 테이블의 스크린 샷을 가지고있다. 이 문제를 해결하는 방법에 대한 아이디어가 있습니까?MySQL Dynamic Pivot 테이블이 적절한 결과를 제공하지 않음
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'MAX(IF(cc.company_config_key_id = ', cck.id, ', cc.config_value, \'', cck.default, '\')) AS ', cck.company_config_key
)
) INTO @sql
FROM company_config cc
LEFT JOIN company_config_key cck
ON cck.id = cc.company_config_key_id;
SET @sql = CONCAT('SELECT co.id, co.name, ', @sql, ' FROM companies co LEFT JOIN company_config cc ON cc.company_id = co.id GROUP BY co.id');
PREPARE stmt FROM @sql;
EXECUTE stmt;
회사 :
company_config_key :
company_config :
(회사 1과 2의 보조 색을 설정해야합니다)결과 :