SQL将结果集从列表转换为网格
我有下面的结果集,它是两个联接表的结果,我想使用子查询重新确定结果的方向。这是当前结果集的一个示例,它是一个动态记录数:SQL将结果集从列表转换为网格,sql,sql-server-2008,resultset,Sql,Sql Server 2008,Resultset,我有下面的结果集,它是两个联接表的结果,我想使用子查询重新确定结果的方向。这是当前结果集的一个示例,它是一个动态记录数: Forename Surname Subject Result Mercury Freddie English C Mercury Freddie Mathematics D Simon Paul English E Simon Paul Mathemati
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
您可以使用
CASE
,只需将其与一些聚合函数(如MAX()
和groupby
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
添加您的代码将更快地帮助您我认为以下几点是适用的: