-2
stdId   StdName Subname  SubjectMark
---------------------------------------------
1   alex    english    50
2   anto    english    60
2   anto    hindhi     60
2   anto    science    30
2   anto    math       20
3   abru    math       70
3   abru    hindhi     60
3   abru    english    50

我有一张如上图所示的表格。我想编写一个查询来获取值,如下所示

student     english  hindhi   science   math
----------------------------------------------
alex           50   
anto           60       60      30   
abru           50       70               70

请帮助我..提前谢谢

4

1 回答 1

0

您没有指定您使用的数据库,但您应该能够在任何数据库中使用带有 CASE 表达式的聚合函数将数据行转换为列。此过程称为 PIVOT:

select stdname,
  max(case when subname = 'english' then subjectmark end) english,
  max(case when subname = 'hindi' then subjectmark end) hindi,
  max(case when subname = 'science' then subjectmark end) science,
  max(case when subname = 'math' then subjectmark end) math
from yourtable 
group by stdname;

请参阅带有演示的 SQL Fiddle

于 2013-09-10T14:06:34.897 回答