SQL 旋转多列
SQL Pivot multiple column
我有 table 这样的:-
并且想要这样的输出:-
有什么帮助吗?
下面是针对此问题的更 standard/general 方法(条件聚合),它适用于多个数据库(包括 SQL 服务器)。
SELECT
ID
,MAX(CASE WHEN DOMAIN = 'A' THEN SCORE END) AS DOMAIN_A
,MAX(CASE WHEN DOMAIN = 'A' THEN BAND END) AS BAND_A
,MAX(CASE WHEN DOMAIN = 'B' THEN SCORE END) AS DOMAIN_B
,MAX(CASE WHEN DOMAIN = 'B' THEN BAND END) AS BAND_B
,MAX(CASE WHEN DOMAIN = 'C' THEN SCORE END) AS DOMAIN_C
,MAX(CASE WHEN DOMAIN = 'C' THEN BAND END) AS BAND_C
,MAX(CASE WHEN DOMAIN = 'D' THEN SCORE END) AS DOMAIN_D
,MAX(CASE WHEN DOMAIN = 'D' THEN BAND END) AS BAND_D
,MAX(CASE WHEN DOMAIN = 'E' THEN SCORE END) AS DOMAIN_E
,MAX(CASE WHEN DOMAIN = 'E' THEN BAND END) AS BAND_E
FROM MyTable
Group by ID
;
注意:如果您没有使用 T-SQL(SQL 服务器),数据透视功能将不起作用,因为它特定于 SQL 服务器
我有 table 这样的:-
并且想要这样的输出:-
有什么帮助吗?
下面是针对此问题的更 standard/general 方法(条件聚合),它适用于多个数据库(包括 SQL 服务器)。
SELECT
ID
,MAX(CASE WHEN DOMAIN = 'A' THEN SCORE END) AS DOMAIN_A
,MAX(CASE WHEN DOMAIN = 'A' THEN BAND END) AS BAND_A
,MAX(CASE WHEN DOMAIN = 'B' THEN SCORE END) AS DOMAIN_B
,MAX(CASE WHEN DOMAIN = 'B' THEN BAND END) AS BAND_B
,MAX(CASE WHEN DOMAIN = 'C' THEN SCORE END) AS DOMAIN_C
,MAX(CASE WHEN DOMAIN = 'C' THEN BAND END) AS BAND_C
,MAX(CASE WHEN DOMAIN = 'D' THEN SCORE END) AS DOMAIN_D
,MAX(CASE WHEN DOMAIN = 'D' THEN BAND END) AS BAND_D
,MAX(CASE WHEN DOMAIN = 'E' THEN SCORE END) AS DOMAIN_E
,MAX(CASE WHEN DOMAIN = 'E' THEN BAND END) AS BAND_E
FROM MyTable
Group by ID
;
注意:如果您没有使用 T-SQL(SQL 服务器),数据透视功能将不起作用,因为它特定于 SQL 服务器