如何在SQL中"flatten"一个table?

How to "flatten" a table in SQL?

我想对 table MyTable 进行查询,使用它的值来生成列。

DATA_TYPE列中,保证只有123作为可能的值。

MyTable:

CATEGORY     DATA_TYPE   DATA_CONTENT   OTHER_CONTENT
----------   ---------   ------------   -------------
CATEGORY A   1           CONTENT 1      OTHER 1    
CATEGORY A   2           CONTENT 2      OTHER 2    
CATEGORY A   3           CONTENT 3      OTHER 3    
CATEGORY B   1           CONTENT 1      OTHER 1    
CATEGORY B   2           CONTENT 2      OTHER 2    
CATEGORY B   3           CONTENT 3      OTHER 3    
CATEGORY C   1           CONTENT 1      OTHER 1    
CATEGORY C   2           CONTENT 2      OTHER 2    
CATEGORY C   3           CONTENT 3      OTHER 3    

这是期望的结果:

CATEGORY     DATA_TYPE_1   DATA_TYPE_2   DATA_TYPE_3   OTHER_1   OTHER_2   OTHER_3   
----------   -----------   -----------   -----------   -------   -------   -------   
CATEGORY A   CONTENT 1     CONTENT 2     CONTENT 3     OTHER 1   OTHER 2   OTHER 3   
CATEGORY B   CONTENT 1     CONTENT 2     CONTENT 3     OTHER 1   OTHER 2   OTHER 3   
CATEGORY C   CONTENT 1     CONTENT 2     CONTENT 3     OTHER 1   OTHER 2   OTHER 3   
SELECT
  category,
  MAX(CASE WHEN data_type = 1 THEN  data_content END)  AS data_type_1,
  MAX(CASE WHEN data_type = 2 THEN  data_content END)  AS data_type_2,
  MAX(CASE WHEN data_type = 3 THEN  data_content END)  AS data_type_3,
  MAX(CASE WHEN data_type = 1 THEN other_content END)  AS other_1,
  MAX(CASE WHEN data_type = 2 THEN other_content END)  AS other_2,
  MAX(CASE WHEN data_type = 3 THEN other_content END)  AS other_3
FROM
  myTable
GROUP BY
  category