2013-12-09 6 views
1

다양한 값을 저장하는 5 개의 열이있는 MySQL 테이블이 있습니다. 테이블의 각 레코드에 대해 5 개의 열은 단일 값 (약 15 개 중 하나)을 저장합니다. 다음은 구조의 예입니다.MYSQL의 여러 열에서 SELECT SUM (DISTINCT 값)

| COL1 | COL2 | COL3 | COL4 | COL5 | 
|------|------|------|-------|-------| 
| val1 | val3 | val8 | val11 | val14 | 
| val2 | val3 | val5 | val9 | val12 | 
| val1 | val2 | val6 | val14 | val15 | 
| val3 | val5 | val9 | val10 | val12 | 
| val2 | val4 | val7 | val11 | val14 | 

각 5 개 열의 고유 한 값을 합한 쿼리를 만들고 싶습니다. 결과에는 val1, val2, val3 등이 5 개의 열에 걸쳐있는 총 횟수가 표시되어야합니다.

이상적 결과로 구성된다 : 도움에 미리

val | total 
_____________________ 

val1 | 34 

val2 | 12 

val3 | 23 

val4 | 14 

val5 | 21 

etc | etc 

감사합니다, 많은 감사.

+0

일부 샘플 데이터를 추가는, 당신이 지금까지해야합니까? –

답변

4

한 가지 방법 : SQL Fiddle

SELECT val, 
     COUNT(*) AS total 
FROM (SELECT Col1 AS Val 
     FROM YourTable 
     UNION ALL 
     SELECT Col2 AS Val 
     FROM YourTable 
     UNION ALL 
     SELECT Col3 AS Val 
     FROM YourTable 
     UNION ALL 
     SELECT Col4 AS Val 
     FROM YourTable 
     UNION ALL 
     SELECT Col5 AS Val 
     FROM YourTable) AS T 
GROUP BY val 

또는 다른 : SQL Fiddle

SELECT CASE N 
     WHEN 1 THEN Col1 
     WHEN 2 THEN Col2 
     WHEN 3 THEN Col3 
     WHEN 4 THEN Col4 
     WHEN 5 THEN Col5 
     END AS Val, 
     COUNT(*) AS total 
FROM YourTable 
     CROSS JOIN (SELECT 1 AS N 
        UNION ALL 
        SELECT 2 
        UNION ALL 
        SELECT 3 
        UNION ALL 
        SELECT 4 
        UNION ALL 
        SELECT 5) AS T 
GROUP BY Val 
+0

위대한 작품! 첫 번째 솔루션은 완벽하게 작동했습니다. 도와 주셔서 감사합니다. –