2013-10-29 2 views
0

를 사용하여 SQL에 결과 :는 재구성하는 방법 쿼리 내가이 모양 데이터를 반환하는 쿼리를 피벗

Project Name Analyte Result 

A     BOD  4mg/l 

A    COD  10mg/l 

B    BOD  4mg/l 

B    COD  10mg/l 

하지만 그것은 다음과 같이해야합니다 : '내가 할 수있는

Project Name Analyte Result Analyte Result 

A    BOD  4mg/l  COD  10mg/l 

B    BOD  4mg/l  COD  10mg/l 

을 SQL을 사용하여이 작업을 수행하는 방법을 이해해야합니다. 피벗 기능이이 작업을 수행합니까? 방법? 당신을 가정

+2

를 참조하십시오? –

+0

항상 BOD와 COD를 가지고 있습니까? 이것은'PIVOT'이 아니라'JOIN'처럼 보입니다. – zimdanen

답변

0

항상 하나 BODCOD을해야 할 것 :

SELECT 
    [a].[Project Name], 
    [a].[Analyte] AS [Analyte1], 
    [a].[Result] AS [Result1], 
    [b].[Analyte] AS [Analyte2], 
    [b].[Result] AS [Result2] 
FROM 
    [Results] [a] 
    JOIN [Results] [b] 
    ON [a].[Project Name] = [b].[Project Name] 
WHERE 
    [a].[Analyte] = 'BOD' 
    AND [b].[Analyte] = 'COD'; 

SqlFiddle합니다.

0

당신이 사용하는 RDBMS을 지정하지 않은하지만 당신은 쉽게 결과를 얻을 수있는 CASE 표현식으로 집계 함수를 사용할 수 있습니다

select 
    projectName, 
    max(case when Analyte = 'BOD' then Analyte end) Analyte_BOD, 
    max(case when Analyte = 'BOD' then Result end) Result_BOD, 
    max(case when Analyte = 'COD' then Analyte end) Analyte_COD, 
    max(case when Analyte = 'COD' then Result end) Result_COD 
from yourtable 
group by projectname; 

SQL Fiddle with Demo 사용하고있는 RDBMS