旋转SQL表

Mer*_*tez 2 sql t-sql sql-server pivot

我有一张如下表

Code        Attribute        Value
--------------------------------------
USA         Population       300M
USA         Language         US English
CANADA      Population       30M
USA         Capital          DC
CANADA      Language         CA English
Run Code Online (Sandbox Code Playgroud)

如何将表旋转90度并制作如下视图来运行查询sp

Code        Language        Population       Capital
------------------------------------------------------
USA         US English         300M              DC
CANADA      CA English          30M              NULL
Run Code Online (Sandbox Code Playgroud)

Lam*_*mak 10

您可以使用PIVOT(对于SQL Server 2005+):

SELECT *
FROM YourTable AS T
PIVOT (MIN(Value) FOR Attribute IN ([Language],[Population],[Capital]) AS PT
Run Code Online (Sandbox Code Playgroud)

对于所有版本的SQL Server,您可以使用:

SELECT  Code, 
        MIN(CASE WHEN Attribute = 'Language' THEN Value END) [Language],
        MIN(CASE WHEN Attribute = 'Population' THEN Value END) [Population],
        MIN(CASE WHEN Attribute = 'Capital' THEN Value END) [Capital]
FROM YourTable
GROUP BY Code
Run Code Online (Sandbox Code Playgroud)