【问题标题】:SQL Convert resultset from list to gridSQL将结果集从列表转换为网格
【发布时间】:2013-10-25 09:41:50
【问题描述】:

我有以下结果集,它是两个连接表的结果,我想使用子查询重新定位结果。这是当前结果集的示例,它是动态记录数:

Forename    Surname    Subject      Result
Mercury     Freddie    English      C
Mercury     Freddie    Mathematics  D
Simon       Paul       English      E
Simon       Paul       Mathematics  F
Garfunkle   Art        English      A
Garfunkle   Art        Mathematics  B

这是我想要达到的目标:

Forename    Surname    English    Mathematics  
Mercury     Freddie    C          D
Simon       Paul       E          F
Garfunkle   Art        A          B

我尝试使用 case 语句来填充它,但这会导致以下结果:

Forename    Surname    English    Mathematics  
Mercury     Freddie    NULL
Simon       Paul       NULL
Garfunkle   Art        NULL
Mercury     Freddie    C          NULL
Simon       Paul       E          NULL
Garfunkle   Art        A          NULL

【问题讨论】:

标签: sql sql-server-2008 resultset


【解决方案1】:

您可以使用CASE,只需将其与MAX()GROUP BY 等聚合函数结合使用

SELECT 
 Forename, Surname
 , MAX(CASE WHEN SUBJECT = 'English' THEN Result END) AS English 
 , MAX(CASE WHEN SUBJECT = 'Mathematics' THEN Result END) AS Mathematics 
FROM Table1
GROUP BY Forename, Surname

SQLFiddle DEMO

【讨论】:

    猜你喜欢
    • 2018-10-08
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多