Oracle Pivot - converting values into columns

前端 未结 2 2104
不知归路
不知归路 2020-12-04 03:16

I have table in Oracle 11g with 3 fields:

 STUDYID  |  STUDY_PARAMETER  | STUDY_VALUE

  5268    |  Age Group        | ADULT (         


        
相关标签:
2条回答
  • 2020-12-04 04:06

    Since the STUDY_VALUE column appears to be a string, you will need to use either the max() or min() aggregate function on the values:

    SELECT *
    FROM  
    (
      SELECT STUDYID, STUDY_VALUE, STUDY_PARAMETER
      FROM   STUDY_INFO
    )
    PIVOT 
    (
      MAX(STUDY_VALUE)
      FOR (STUDY_PARAMETER) IN ('Age Unit' AS AGE_UNIT,
                                  'Age Group' AS AGE_GROUP,
                                  'Trial Type' AS TRIAL_TYPE)
    );
    

    See SQL Fiddle with Demo

    0 讨论(0)
  • 2020-12-04 04:19

    You can try this query.

    SELECT 
    ID,
    MAX(Case When parameter='Age Group' then Value else '0' end) AS  AgeGroup,
    MAX(Case When parameter='Trial Type' then Value else '0'end)AS  TrialType,
    MAX(Case When parameter='Age Unit' then Value else '0'end)AS  AgeUnit
    FROM teststack
    GROUP BY ID 
    ORDER BY ID
    
    0 讨论(0)
提交回复
热议问题