我真的不认为在SQL查询中这样做是可能的,但我试图提取一些数据,我想“重新组织”表的结构(将行数据作为列)。
很难解释所以有一个例子,这是我的表:
MONTH | CODE | VALUE
Jan | ABC | 100
Jan | DEF | 200
Jan | GHI | 200
Feb | ABC | 400
Feb | DEF | 250
Mar | GHI | 450
这就是我想要的:
CODE | Jan | Feb | Mar
ABC | 100 | 400 | null
DEF | 200 | 250 | null
GHI | 200 | null | 450
是否可以使用SQL查询显示这样的数据?
注意:我正在使用SQL Server 2008(使用SQL Management Studio)
答案 0 :(得分:2)
试试这段代码。
SELECT Code,
MAX(CASE WHEN MONTH='Jan' THEN VALUE ELSE NULL END) AS JAN
MAX(CASE WHEN MONTH='Feb' THEN VALUE ELSE NULL END) AS Feb
MAX(CASE WHEN MONTH='Mar' THEN VALUE ELSE NULL END) AS Mar
FROM table_name
GROUP BY Code
ORDER BY Code