에 의해 그룹을 사용하여 열을 행 (동적) 나는 'draftWorker'MySQL의 - (피벗 테이블)
select * from draftWorker;
+--------+----------+
| draftID| WorkerID |
+--------+----------+
| 7 | 8280 |
| 7 | 7794 |
| 7 | 4633 |
| 587 | 8280 |
| 587 | 4633 |
+--------+----------+
다음 쿼리는 나에게 다음과 같은 결과를주고 다음 표를 가지고있다.
SELECT draftID, GROUP_CONCAT(DISTINCT CONCAT(WorkerID)) AS Workers FROM
draftWorker
GROUP BY draftID;
+-----------+----------------+
| draftID | Workers |
+-----------+----------------+
| 7 | 8280,7794,4633 |
| 587 | 8280,4633 |
+-----------+----------------+
하지만 실제로이
+-----------+---------+---------+---------+
| draftID | Worker1 | Worker2 | Worker3 |
+-----------+---------+---------+---------+
| 7 | 8280 | 7794 | 4633 |
| 587 | 8280 | 4633 | |
+-----------+---------+-------------------+
어떤 생각을해야합니까?
[편집]
다음 SQL을 시도해보십시오. 아직 멀었 어.
SELECT draftID, Workers From (
SELECT @position := 0, draftID,
GROUP_CONCAT(DISTINCT CONCAT(WorkerID, ' As WorkerID', (@position :=
@position + 1))) As Workers
FROM draftWorker
GROUP BY draftID) AS C;
+-----------+--------------------------------------------------------+
| draftID | Workers |
+-----------+--------------------------------------------------------+
| 7 | 8280 As WorkerID1,7794 As WorkerID2,4633 As WorkerID3 |
| 587 | 8280 As WorkerID1,4633 As WorkerID2 |
+-----------+--------------------------------------------------------+
정말 MySQL에서 이것을해야합니까? PHP 나 파이썬 같은 클라이언트 프로그래밍 언어에서는 무한히 쉬울 것입니다. – Barmar
StackOverflow는 [자신의 문제를 먼저 해결하려고합니다.] (http://meta.stackoverflow.com/questions/261592), [숙제에 대한 답변을 제공하지 않습니다] (https : //softwareengineering.meta. stackexchange.com/questions/6166). 질문을 업데이트하여 [최소, 완전하며 검증 가능한 예] (http://stackoverflow.com/help/mcve)에서 이미 시도한 것을 보여주십시오. 자세한 내용은 [좋은 질문을하는 방법] (http://stackoverflow.com/help/how-to-ask)을 참조하고 [사이트 둘러보기] (http://stackoverflow.com/tour)를 참조하십시오.) :) – Barmar
동적 피벗에 대한 다른 질문에서 저장 프로 시저를 적용 할 수 있어야합니다. 테이블의 값을 열 이름으로 사용하는 대신'COUNT (*)'의 최대 값을 얻은 다음'Worker 1'과 같은'Worker 1'과 같은 열 이름을'Worker' –
Barmar